revered: Проблемка есть: я получаю ссылку вида /категория/страница/ Все работает отлично, НО: если открыть /категория/ - и вписать название папки (например: /include/), то откроется папка и все её содержание.
1. Используйте роутинг через параметр get как я вам выше привел пример
2.
#ставим перед обработкой route RewriteRule ^very_secret_directory/.*$ - [PT]
RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
Насколько я понял, вы собираетесь писать сайт с нуля, поэтому рекомендую потратить немного времени и посмотреть в сторону какого нибудь mvc фреймворка на php(например Yii). Сэкономите кучу времени и нервов. Для того что бы ездить на велосипеде - не обязательно его придумывать заново, можно взять либо готовый велосипед(CMS) либо собрать его самому(Framework).
Что же касается ЧПУ, то рекомендую использовать такой вариант:
RewriteRule ^(.*)\?*$ index.php?r=$1 [L,QSA]
Т.е. основной запрос(маршрут) будет в $_GET['r'], а все остальные параметры если они будут необходимы так же брать из get.
$_GET['r'] - обрабатывать с помощью регулярных выражение или путем разбиения строки(explode) и писать правила.
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');
}
Добавить код который между 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>
Проблемка есть: я получаю ссылку вида /категория/страница/
Все работает отлично, НО:
если открыть /категория/ - и вписать название папки (например: /include/), то откроется папка и все её содержание.
1. Используйте роутинг через параметр get как я вам выше привел пример
2.
Насколько я понял, вы собираетесь писать сайт с нуля, поэтому рекомендую потратить немного времени и посмотреть в сторону какого нибудь mvc фреймворка на php(например Yii). Сэкономите кучу времени и нервов. Для того что бы ездить на велосипеде - не обязательно его придумывать заново, можно взять либо готовый велосипед(CMS) либо собрать его самому(Framework).
Что же касается ЧПУ, то рекомендую использовать такой вариант:
Т.е. основной запрос(маршрут) будет в $_GET['r'], а все остальные параметры если они будут необходимы так же брать из get.
$_GET['r'] - обрабатывать с помощью регулярных выражение или путем разбиения строки(explode) и писать правила.
джумла кирилицу вставляет
В том коде который я вам до этого давал, найдите строчку
if(href == uri.path) {замените на
if(href == uri.path || href == decodeURIComponent(uri.path)) {nemartirosyan, рискну спросить,... а у вас на сайте в меню урлы какие?
nemartirosyan, оно работает, просто дело все вот в чем...
Т.к. это меню и оно скорее всего находится вверху, поэтому при клике по пункту и после загрузки страницы, позиция курсора не меняется и соответственно срабатывает событие hover для меню.
вот этот скрипт попробуйте
Берем отсюда скрипт http://phpjs.org/functions/parse_url/, подключаем его выше скрипта который работает с меню
Добавить код который между begin end к вашему коду
danny2, приведите более точный пример с исходным файлом на 10 строк и результатом.
Там простенькая обфускация у js файлов.
Внизу страницы есть 4 скрипта
Тебе нужны 1,3,4... 2 можно выкинуть - он не нужен
Открываешь 3 скрпт ("/pop/xz.js") копируешь код, открываешь http://jsbeautifier.org/ вставляешь, нажимаешь кнопку и получаешь читабельный код.
Как минимум должно быть 2 заголовка
На данном сайте используется геокодирование от 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);
}
});