2009-07-10 7 views
5

Я разрабатываю веб-сайт, содержащий 3 страницы (Home, page2, page3) ... на второй странице есть панель навигации с 4 элементами (подстраница1, подстраница2, ...), которые я использую для замены содержимое страницы 2 с помощью переменных URL! Другими словами, второй элемент панели навигации в PAGE2 указывает на:Почему этот RewriteRule не работает?

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

пункт пункт 3:

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

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

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

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

в .htaccess помещается в корень!

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

ответ

9

Когда вы используете .htaccess вы не ведущий слэш:

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

Спасибо за ваш ответ! Также с этим переписывание не работает !!! – 2009-07-10 13:00:36

+0

Когда вы говорите, что это не работает, что происходит точно? – Greg

+0

Попробуйте просто положить немного мусора в .htaccess - вы должны получить 500 Server Error. Если вы этого не сделаете, ваш .htaccess не загружается – Greg

0

Это может быть лидирующий слэш в конце, так что изменить:

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

к этому :

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

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

2

G'day,

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

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

Похоже, вы не повез с помощью .htaccess

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

Смежные вопросы