[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Проблемы с .htaccess
bybad
Собственно говоря, работаю сейчас над ЧПУ преобразованиями урлов.

На данном этапе хочу преобразовать ссылку из вида сайт/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


Подскажите пожалуйста в чём может быть дело. Заранее благодарю за любую помощь.
YVSIK
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
bybad
Цитата (YVSIK @ 6.10.2013 - 18:21)
ну вот так у меня вполне работает , осталось найти различия.

Когда в файле всего 1-2 условия у меня тоже всё работает, но мне надо сделать ЧПУ для нескольких страниц, и когда я добавляю новое условие к тому что уже есть в файле - сайт ложится.
bybad
Эту проблему вроде как решить удалось, не знаю правильно или нет - сделал вот так:

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.

Может кто-то помочь?
paul85
А какая идея в целом? Зачем так делать? Мне кажется задача решается не средствами .htaccess а уже роутером.
bybad
Цитата (paul85 @ 7.10.2013 - 15:33)
А какая идея в целом? Зачем так делать? Мне кажется задача решается не средствами .htaccess а уже роутером.

Идея сделать на сайте ЧПУ.

PS Как умею так и пишу, ни о каких роутерах понятия даже не имею. все страницы уже сделал. осталась только вот эта.
paul85
Может и можно через .htaccess как-то сделать, но это как бы сказать... Не совсем удобно! ЧПУ обычно связаны тесно с роутерами, а они с ООП (хотя и не строго обязательно, но чаще всего).

В вашем случае можно сварганить диспетчер, который будет парсить, подключать файл и/или вызывать функцию, забрасывать в GET параметры. Ну я бы так сделал... Костыли, конечно, но раз все готово, то лучше так, чем переписывать с нуля.

Опять же, если вы новичок, то вполне вероятно вам такое решение не под силу. Как сделать через .htaccess не знаю. Пишу исключительно в качестве совета/подсказки куда двигаться и чего смотреть.
bybad
Цитата (paul85 @ 7.10.2013 - 16:26)
Пишу исключительно в качестве совета/подсказки куда двигаться и чего смотреть.

Спасибо за совет. Не знаю как там роутеры работают, но по-моему с помощью реврайта (с учётом того что умеешь им пользоваться) ЧПУ сделать несколько проще - всего пару условий в .htaccess. Вот бы ещё знать как их правильно составить...
Xes
Делаешь все правильно.

Примерно так:
Цитата
RewriteRule ^anekdoty/date/([a-z0-9-]+)/page/([0-9-]+)$ anekdoty-cat.php?date=$1&cat=$2 [L]

Потыкайся там с косяком написано но суть дела понятна думаю. Для даты я не помню как точка обозначается может "." а может спецсимволом каким. И вообще точка в адресной строке... это под вопросом.
bestxp
честно скажу смотреть в сторону роутера,

А сделать это проще некуда, всего пару шагов,

1. Перенаправляешь все запросы на один файл например index.php
2. Там смотришь в _SERVER['REQUEST_URI']
3. отсекаешь название файла и все что после ?
4. Разбираешь оставшуюся часть как тебе удобнее, и делаешь include нужного файла ( в соответствии с тем какие условия совпали и всё )
paul85
bestxp, ну так я об этом и говорил! =) Но ТС хочет непременно победить .htaccess. Да там даже роутер не нужен - достаточно парсера-диспетчера.

Тем более у него обратная задача, из ЧПУ сделать здоровые ссылки некрасивые. Сайт-то уже написан, но вот захотелось ЧПУ и все тут. Его бы переписать, конечно, сразу под нормальный роутер, а лучше всего даже под фреймворк... Но раз сделано, так сделано...

Но я просто не уверен, что ТС справится с разработкой такого диспетчера... Там же исключения надо отрабатывать... Много нюансов, чтобы это все хорошо работало.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.