Назад | Перейти на главную страницу

Simple RewriteRule не работает

У меня есть следующий URL:

http://www.mysite.com/test/index.php?topic=rules

Хочу переписать на:

http://www.mysite.com/test/topic/rules

Я пробовал следующее:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^topic/([a-zA-Z0-9]+)/$ index.php?topic=$1

Ничего не сделал. Я использовал сторонний веб-сайт для создания этого кода перезаписи, поэтому, возможно, он неверен, я не знаю. Есть ли что-нибудь в Apache, из-за чего это не работает?

Вы не можете сопоставить строку запроса в RewriteRule, поэтому вам нужно использовать RewriteCond.

RewriteCond %{QUERY_STRING} topic=(.*)
RewriteRule test/index.php test/topic/%1? [L]

Вам не хватает /test/ в URL. Ведущее ^ ваше правило означает «начало пути». Вы наверняка захотите:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^/test/topic/([a-zA-Z0-9]+)/$ /test/index.php?topic=$1

Или что-то подобное.