ukrdev

ukrdev
Рейтинг
31
Регистрация
15.11.2011
revered:
Проблемка есть: я получаю ссылку вида /категория/страница/
Все работает отлично, НО:
если открыть /категория/ - и вписать название папки (например: /include/), то откроется папка и все её содержание.

1. Используйте роутинг через параметр get как я вам выше привел пример

2.


#ставим перед обработкой route
RewriteRule ^very_secret_directory/.*$ - [PT]

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

#hide directory
RewriteRule ^very_secret_directory/.*$ - [PT]
RewriteRule ^include/.*$ - [PT]
RewriteRule ^etc/.*$ - [PT]

#RewriteRule ^(.*)\?*$ index.php?route=$1 [L,QSA]

Насколько я понял, вы собираетесь писать сайт с нуля, поэтому рекомендую потратить немного времени и посмотреть в сторону какого нибудь mvc фреймворка на php(например Yii). Сэкономите кучу времени и нервов. Для того что бы ездить на велосипеде - не обязательно его придумывать заново, можно взять либо готовый велосипед(CMS) либо собрать его самому(Framework).

Что же касается ЧПУ, то рекомендую использовать такой вариант:

RewriteRule ^(.*)\?*$ index.php?r=$1 [L,QSA]

Т.е. основной запрос(маршрут) будет в $_GET['r'], а все остальные параметры если они будут необходимы так же брать из get.

$_GET['r'] - обрабатывать с помощью регулярных выражение или путем разбиения строки(explode) и писать правила.

nemartirosyan:
джумла кирилицу вставляет
/монтаж-труб.html

В том коде который я вам до этого давал, найдите строчку

if(href == uri.path) { 

замените на

if(href == uri.path || href == decodeURIComponent(uri.path)) {

nemartirosyan, рискну спросить,... а у вас на сайте в меню урлы какие?

<a href="#">Шумоглушители</a>

nemartirosyan, оно работает, просто дело все вот в чем...

Т.к. это меню и оно скорее всего находится вверху, поэтому при клике по пункту и после загрузки страницы, позиция курсора не меняется и соответственно срабатывает событие hover для меню.

вот этот скрипт попробуйте


jQuery(document).ready(function(){

var uri = parse_url(document.location.href);
jQuery('.smenu a').each(function() {
var href = jQuery(this).attr('href');
if(href == uri.path) {
jQuery(this).parent().parent().show();
jQuery(this).parent().parent().parent().addClass('active');
jQuery(this).parent().addClass('active');
jQuery(this).parent().children('ul').show();
}
});

jQuery('.smenu ul li').hover(
function() {
var class_name = jQuery(this).attr('class');
if(class_name != 'active') {
jQuery(this).find('ul').slideDown(90);
jQuery(this).addClass('menuactive');
}

},
function() {
var class_name = jQuery(this).attr('class');
if(class_name != 'active') {
jQuery(this).find('ul').slideUp(90);
jQuery(this).removeClass('menuactive');
}
}
);

});

Берем отсюда скрипт http://phpjs.org/functions/parse_url/, подключаем его выше скрипта который работает с меню

Добавить код который между begin end к вашему коду


<script type="text/javascript">
jQuery(document).ready(function(){
jQuery('.smenu ul li').hover(
function() {
jQuery(this).find('ul').slideDown(90);
jQuery(this).addClass('menuactive');
},
function() {
jQuery(this).find('ul').slideUp(90);
jQuery(this).removeClass('menuactive');
}
);
/* begin */
var uri = parse_url(document.location.href);
jQuery('.smenu a').each(function() {
var href = jQuery(this).attr('href');
if(href == uri.path) {
jQuery(this).parent().parent().show();//если это 2-й уровень
jQuery(this).parent().children('ul').show();//если это 1-й уровень
}
});
/* end */
});
</script>

danny2, приведите более точный пример с исходным файлом на 10 строк и результатом.

Там простенькая обфускация у js файлов.

Внизу страницы есть 4 скрипта


1 <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
2 <script src="/pop/xs.js" type="text/javascript"></script>
3 <script src="/pop/xz.js" type="text/javascript"></script>
4 <script src="/pop/jquery.cookie.js" type="text/javascript"></script>

Тебе нужны 1,3,4... 2 можно выкинуть - он не нужен

Открываешь 3 скрпт ("/pop/xz.js") копируешь код, открываешь http://jsbeautifier.org/ вставляешь, нажимаешь кнопку и получаешь читабельный код.

Как минимум должно быть 2 заголовка


header('Content-type: video/mp4');
header('Content-length: '.filesize($filename));

На данном сайте используется геокодирование от google

$("div.map_settings input[type=text]").autocomplete({

//Определяем значение для адреса при геокодировании
source: function(request, response) {
geocoder.geocode( {'address': request.term}, function(results, status) {
response($.map(results, function(item) {
return {
label: item.formatted_address,
value: item.formatted_address,
}
}));
})
},
//Выполняется при выборе конкретного адреса
select: function(event, ui) {
var location = new google.maps.LatLng(ui.item.latitude, ui.item.longitude);
}
});
Всего: 144