Проблема mod_rewrite с путями подпапок - PullRequest
1 голос
/ 10 июля 2009
From : www.example.com/cut/456
To : www.example.com/cut/index.php?tag=456

Я пробую это, и это не работает

RewriteEngine On
RewriteRule ^([^/]*)$ /cut/index.php?tag=$1 [L]

Ответы [ 4 ]

3 голосов
/ 15 июля 2009
RewriteEngine On
RewriteBase /cut/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)$ /index.php?tag=$1 [L]

Это работа с этим

1 голос
/ 10 июля 2009

Действительно ли сервер загружает .htaccess? Вы можете проверить это, бросив мусор в конце файла и посмотрев, есть ли у вас ошибка.

Если это не так, AllowOverride, вероятно, установлен на None где-то выше в дереве каталогов. Попробуйте объявить <Directory /path/to/cut> где-нибудь в главном файле конфигурации вашего Apache и поместить в него AllowOverride All.

1 голос
/ 10 июля 2009

, если ваш .htaccess не находится в каталоге cut, лучше использовать:

RewriteRule ^cut/(.+)/?$ /cut/index.php?tag=$1 [L]

в противном случае

RewriteRule ^(.+)/?$ index.php?tag=$1 [L]

должен сделать. Кажется, это проблема вашей строки замещения, трудно сказать, в чем именно причина, поскольку не работает не является достаточным описанием проблемы.

0 голосов
/ 10 июля 2009

Если вы просто ожидаете целочисленные значения, вы должны ограничить свой шаблон следующими значениями:

RewriteRule ^([1-9][0-9]*)$ index.php?tag=$1 [L]

Проблема с вашим текущим шаблоном заключается в том, что ^([^/]*)$ также соответствует index.php (/cut/index.php без префикса пути к каталогу) и, следовательно, может вызвать бесконечный цикл.

...