Как стать автором
Обновить

Комментарии 21

просто вы не умеете их готовить :)
Я то умею, лет 7 уже их пишу время от времени, а вот тем кто впервые сталкивается — бывает сложновато :-)
Есть, но это не избавляет от необходимости руками писать такие регекспы, которые бы в конце концев приводили бы к «устойчивому урлу», это просто дополнительная, и часто ненужная работа.
# Don't loop.
RewriteCond %{ENV:REDIRECT_STATUS} !^$
RewriteRule .* — [L]
Интересное решение, более жесткое, в моём варианте часть правил можно отправить на второй проход, хотя ваш для большинства случаев подойдет :-)
Почему бы просто не писать однозначные правила, которые будут переписывать только то, что нужно?
Потому что для этого нужны дополнительные усилия мозга:

RewriteRule ^/?page/(.*)$ /page/read.php?page=$1 [E=FINISH:1,L,QSA]

Как вы это перепишите однозначно?
Мозг для того и нужен, чтобы не использовать конструкции типа (.*)
Это просто пример. В любом случае, не вижу проблем с (.*) если это действительно нужно.
Это я к тому, что (.*) и вызывает зацикливание. Не знаю, когда это может быть действительно нужно, но от такой маски ещё и производительность сильно страдает.
Как тогда прикажете FrontController делать?
И мне кажется вы переоцениваете сложность этого регэкспа. Готов поспорить, даже на 10'000 запросах в секунду Апач не упрется в этот регэксп :-)
О! Я нашёл это :)))
Спасибо огромное
а я в последнее время использую что-то типа

RewriteEngine On
RewriteBase /

RewriteRule ^(.*).png$ $1.png [E=redir:yes,L]
RewriteRule ^(.*).gif$ $1.gif [E=redir:yes,L]
RewriteRule ^(.*).jpg$ $1.jpg [E=redir:yes,L]
RewriteRule ^(.*).css$ $1.css [E=redir:yes,L]
RewriteRule ^(.*).js$ $1.js [E=redir:yes,L]

RewriteCond %{ENV:REDIRECT_redir} !^yes$
RewriteRule .* index.php [L]

то есть, все (за исключениями понятно чего) летит в индекс, а дальше уже разгребаю что прилетело в скрипте, мне почему-то так спокойнее
шаблон называется FrontController
RewriteRule ^(.*).(png|gif|jpg|css|js)$ $1.$2 [E=redir:yes,L]
Ну вообще-то файл еще существовать должен.
RewriteEngine On
RewriteCond   %{REQUEST_FILENAME}       !-d
RewriteCond   %{REQUEST_FILENAME}       !-f
RewriteRule   ^(.*)                                             index.php?%{QUERY_STRING}
О ЧЕЛОВЕЧИЩЕ! Я не знаю как высказать свою благодарность тебе! Я вскипятил себе мозг 10 раз пока не увидел это! Примите все возможные и невозможные способы благодарности от меня.
Спасибо :-)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории