Почему может не работать этот rewrite? (htaccess)

Статус
В этой теме нельзя размещать новые ответы.

SoaringHawk

Постоялец
Регистрация
25 Апр 2009
Сообщения
61
Реакции
2
PHP:
RewriteCond %{REQUEST_URI} ^/?tag=(.*)$
#RewriteCond %{REQUEST_FILENAME} !-f
#RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /folder/?tag=%1 [R=301,L]
:nezn:
При запросе "/?tag=bla-bla-bla" по заголовкам отдается HTTP200...
Добавил в индексный скрипт echo $_SERVER['REQUEST_URI']. Пишит "/?tag=bla-bla-bla", т.е. по идее должен был сработать реврайт, но не срабатывает почему-то. :confused:

В чем ошибка?
 
Да, конечно :)
Ват сам код:
Код:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.+)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

[COLOR=Red][B]RewriteCond %{REQUEST_URI} ^/\?tag=(.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /folder/?tag=%1 [R=301,L][/B][/COLOR]

RewriteCond %{REQUEST_URI} ^/(index|default|main)\.([ps]?htm[l]?|php[0-9]?)(.*)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ /%3 [R=301,L]

RewriteCond %{REQUEST_URI} ^/([0-9]+)-.+\.html$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ /?p=%1 [L]
Все правила срабатывают когда положено, кроме выделенного куска.
 
  • Заблокирован
  • #4
RewriteRule ^.*$ /folder/?tag=%1 [R=301,L]

С точки зрения Apache он запрашивает не /folder/, а /folder/index.php (или еще что). Соответственно, /\?tag= никогда не срабатывает. Может быть, пойдет index.php?tag=
 
Нашел в чем причина. :yahoo:
В скрипте, переменная $_SERVER['REQUEST_URI'] содержит параметры (после "?"), а в htaccess %{REQUEST_URI} - нет. Поэтому правило и не срабатывало. :)

Вот так работает как положено:
Код:
RewriteCond %{REQUEST_URI} ^/(index\.php)?$
RewriteCond %{QUERY_STRING} ^(tag|page)=(.*)$
RewriteRule ^.*$ /folder/?tag=%2 [R=301,L]
 
А как запретить просмотр существующих файлов?
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху