Почему этот RewriteRule не работает? - PullRequest
5 голосов
/ 10 июля 2009

Я разрабатываю веб-сайт, содержащий 3 страницы (Home, page2, page3) ... на второй странице есть панель навигации с 4 элементами (subpage1, subpage2, ...), которые я использую замените содержимое страницы 2 переменными url! Другими словами, второй элемент панели навигации на странице 2 указывает на:

http://localhost/uk/page2/index.php?pg=subpage2

пункт 3 указывает на:

http://localhost/uk/page2/index.php?pg=subpage3

Теперь я хотел бы использовать более дружественные URL через .htaccess!

Я написал это:

RewriteEngine On
RewriteRule /uk/page2/(.*)/$ /uk/page2/index.php?pg=$1

в .htaccess в корне!

Но не работает! Пожалуйста, помогите !!!

Ответы [ 3 ]

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

Когда вы используете .htaccess, у вас нет косой черты:

RewriteEngine On
RewriteRule ^uk/page2/(.*)/$ /uk/page2/index.php?pg=$1
2 голосов
/ 10 июля 2009

G'day,

Я бы предложил включить параметр конфигурации RewriteLog на высоком уровне, чтобы проверить, что на самом деле происходит под прикрытием.

Has AllowOverides been enabled?</obvious> (-:

Похоже, вам не повезло, используя .htaccess

Невероятно, что mod_rewrite обеспечивает манипулирование URL-адресами в контексте каждого каталога, то есть в файлах .htaccess, хотя они достигаются очень долго после того, как URL-адреса были преобразованы в имена файлов. Так должно быть, потому что файлы .htaccess находятся в файловой системе, поэтому обработка уже достигла этой стадии. Другими словами: В соответствии с этапами API на данный момент уже слишком поздно для любых манипуляций с URL . - Apache mod_rewrite doc.s (выделено мое)

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

Это может быть косая черта в конце, поэтому измените это:

RewriteEngine On
RewriteRule /uk/page2/(.*)/$ /uk/page2/index.php?pg=$1

к этому:

RewriteEngine On
RewriteRule ^(.*)uk/page2(/?)(.*)$ /uk/page2/index.php?pg=$3

Еще одна вещь, которую вы должны проверить, это то, что в вашем файле httpd.conf для AllowOverride установлено значение All, а не None. Если для него установлено значение «Нет», вам не разрешено ничего делать с .htaccess.

...