хм... а ведь и в самом деле +1 . == любой символ за исключением ситуации описанной Олегом. И нам нужно запустить свой оброботчик, по твоему правилу если папка существует то в нее и идем, а Олег хотел сказать что у него возникают ситуации когда есть папка но нужно чтобы запустился обработчик на этот адрес а не открылась папка.
def, кстати говоря, mod_rewrite в контексте каталога - само о себе не быстрая штука, в отличие от реврайтов, вписанных в httpd.conf - потому что на момент открытия .htaccess все альясы и прочее уже отработали, и mod_rewrite рестартует этот процесс заново... Поэтому самый быстрый вариант скорее всего с ForceType...
Посоветуйте, как лучше потом разбирать строчку Код (Text): /nomod_rewrite/chototut/itut из URL Код (Text): http://мойдомен.ru/nomod_rewrite/chototut/itut
Ну, я просто делаю, PHP: $args = explode('/',$_SERVER['REQUEST_URI']) Если в какие то конкретно переменные разносить то примерно так: PHP: list($part,$mode,$info) = explode('/',$_SERVER['REQUEST_URI'])
Я вот подумал что можно еще отработать через ErrorDocument, не меняя адреса в адресной строке браузера. Перенаправлять все 404 на скрипт, разбирающий запрошенный адрес. А ссылки на "красивые адреса" заведомо ставить с 404 ошибкой. Тогда никаких .page и ничего прочего не потребуется.
Спасибо, так и знал. Я думал еще спсобы какие то есть... Но... а как быть с поиском? на странице поиска у меня формируется строка типа Код (Text): search.php?firm=тутфирма&city=тутгород&service=тутуслуги Просто человек не всегда заполняет все поля поиска и может получиться при подходе ЧПУ(если не заполнено поле город) Код (Text): /search/тутфирма//тутуслуги
Код (Text): RewriteCond %{REQUEST_FILENAME} !-f # не надо - не юзаем # RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . index.php [L,QSA]
GET работает как обычно, обрезать параметры можно так: PHP: <?php $baseDir = dirname($_SERVER['SCRIPT_NAME']); $url = parse_url($_SERVER['REQUEST_URI']); ?> <dl> <dt>BASE DIR</dt><dd><?=$baseDir?></dd> <dt>PATH</dt><dd><?=$url['path']?></dd> </dl>
Неподскажете как это: PHP: <php $module = $_GET['module']; if ($module == "Registration"; { include("pages/Registration.php"); } else { include("news/php"); } ?> Переделать в то, что автоматически при входе на index.php?module=Registration открывало фаил Registration.php из папки pages/ безз вноса строчьки if ($module = "lalala") в скрипт.
Я должен каждую неделю постить одну и туже ссылку ? В поиск люди, в поиск !!! http://php.ru/forum/viewtopic.php?p=35#35
Что-то я запутался в модрерайте. В файле .htaccess пишу так: RewriteRule ^category_([0-9]+)/page_([0-9]+)$ /index.php?cat=$1&page=$2 т.е. я хочу, чтобы ссылка /category_123/page_4 преобразовывалась в /index.php?cat=123&page=4 Ссылка успешно преобразовывается в то что нужно и php-код успешно генерит html-текст (смотрел через View Source), но ссылки на картинки не работают, так как эксплорер дописывает в начале ссылок /category_123/, т.е. файлы ищутся в несуществующей директории category_123.
virabhadra Если используешь "красивые" ссылки, придется отвыкать от относительной адресации. Все ссылки в HTML (на страницы, на картинки, стили и т. п.) нужно делать абсолютными - начинать ссылку с корневого каталога (/images/123.gif) либо как вариант полностью прописывать адрес сайта начиная с http://.
Олег - посмотри как у Вирабхадры выглядит .htaccess: все пучком, перехватываются только запросы без расширений вообще.
Dagdamor, спасибо! Действительно помогло. Расставил везде слеши в началах урлов и все заработало! Честно говоря не знал эту особенность слеша в начале. Заполнил теперь, видимо большой, пробел в знаниях. :shock:
Информацию о HTML и Javascript я выуживаю из MSDN, но чего-то не нашел там ничего об этой особенности слеша в URL. Но это уже детали... Меня еще интересует, вцелом, на сколько mod_rewrite отягащает работу сервера Apache?