Собственно говоря, работаю сейчас над ЧПУ преобразованиями урлов.
На данном этапе хочу преобразовать ссылку из вида сайт/anekdoty-cat.php?link=anekdoty-pro-zhivotnyh в сайт/anekdoty-pro-zhivotnyh
по иде должен был сработать такой приём
RewriteRule ^(.*)$ anekdoty-cat.php?link=$1 [L]
но после его добавления сайт перестал работать - пишет "состояние перенаправления".
Хочу заметить что в файле .htaccess уже использован аналогичный приём для другой страницы anekdoty-post.php и там всё работает, но как только я добавляю второе условие всё "ложится".
RewriteEngine on
Options +FollowSymlinks -MultiViews
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^anekdoty$ anekdoty.php [L]
RewriteRule ^anekdot/(.*)$ anekdoty-post.php?id=$1 [L]
ErrorDocument 404 http://сайт.ru/error404.php
ErrorDocument 403 http://сайт.ru/error403.php
Подскажите пожалуйста в чём может быть дело. Заранее благодарю за любую помощь.
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^(.*)$ index.php?page=$1 [L,QSA]
ну вот так у меня вполне работает , осталось найти различия.
_____________
«Гнусное свойство карликовых умов приписывать
________________!свое духовное убожество другим!»
___О) как-же он прав=>__________________ © Оноре де Бальзак. отличный хост(рекомендую !! )My MVC-CMV
Цитата (YVSIK @ 6.10.2013 - 18:21) |
ну вот так у меня вполне работает , осталось найти различия. |
Когда в файле всего 1-2 условия у меня тоже всё работает, но мне надо сделать ЧПУ для нескольких страниц, и когда я добавляю новое условие к тому что уже есть в файле - сайт ложится.
Эту проблему вроде как решить удалось, не знаю правильно или нет - сделал вот так:
RewriteRule ^anekdoty/([a-z0-9-]+)$ anekdoty-cat.php?cat=$1 [L]
Теперь есть другая задача! Надо преобразовать адрес
anekdoty-date.php?date=07.10.2013&page=2 в
anekdoty/date/07.10.2013/page/2.
Может кто-то помочь?
А какая идея в целом? Зачем так делать? Мне кажется задача решается не средствами .htaccess а уже роутером.
Цитата (paul85 @ 7.10.2013 - 15:33) |
А какая идея в целом? Зачем так делать? Мне кажется задача решается не средствами .htaccess а уже роутером. |
Идея сделать на сайте ЧПУ.
PS Как умею так и пишу, ни о каких роутерах понятия даже не имею. все страницы уже сделал. осталась только вот эта.
Может и можно через .htaccess как-то сделать, но это как бы сказать... Не совсем удобно! ЧПУ обычно связаны тесно с роутерами, а они с ООП (хотя и не строго обязательно, но чаще всего).
В вашем случае можно сварганить диспетчер, который будет парсить, подключать файл и/или вызывать функцию, забрасывать в GET параметры. Ну я бы так сделал... Костыли, конечно, но раз все готово, то лучше так, чем переписывать с нуля.
Опять же, если вы новичок, то вполне вероятно вам такое решение не под силу. Как сделать через .htaccess не знаю. Пишу исключительно в качестве совета/подсказки куда двигаться и чего смотреть.
Цитата (paul85 @ 7.10.2013 - 16:26) |
Пишу исключительно в качестве совета/подсказки куда двигаться и чего смотреть. |
Спасибо за совет. Не знаю как там роутеры работают, но по-моему с помощью реврайта (с учётом того что умеешь им пользоваться) ЧПУ сделать несколько проще - всего пару условий в .htaccess. Вот бы ещё знать как их правильно составить...
Делаешь все правильно.
Примерно так:
Цитата |
RewriteRule ^anekdoty/date/([a-z0-9-]+)/page/([0-9-]+)$ anekdoty-cat.php?date=$1&cat=$2 [L]
|
Потыкайся там с косяком написано но суть дела понятна думаю. Для даты я не помню как точка обозначается может "." а может спецсимволом каким. И вообще точка в адресной строке... это под вопросом.
честно скажу смотреть в сторону роутера,
А сделать это проще некуда, всего пару шагов,
1. Перенаправляешь все запросы на один файл например index.php
2. Там смотришь в _SERVER['REQUEST_URI']
3. отсекаешь название файла и все что после ?
4. Разбираешь оставшуюся часть как тебе удобнее, и делаешь include нужного файла ( в соответствии с тем какие условия совпали и всё )
bestxp, ну так я об этом и говорил! =) Но ТС хочет непременно победить .htaccess. Да там даже роутер не нужен - достаточно парсера-диспетчера.
Тем более у него обратная задача, из ЧПУ сделать здоровые ссылки некрасивые. Сайт-то уже написан, но вот захотелось ЧПУ и все тут. Его бы переписать, конечно, сразу под нормальный роутер, а лучше всего даже под фреймворк... Но раз сделано, так сделано...
Но я просто не уверен, что ТС справится с разработкой такого диспетчера... Там же исключения надо отрабатывать... Много нюансов, чтобы это все хорошо работало.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.