Перенаправление htaccess с конфликтом динамических переменных - PullRequest
0 голосов
/ 23 марта 2011

Я работаю в старой CMS, которая использует htaccess для перезаписи URI с переменными GET в нечто более удобное для пользователя.

RewriteEngine on
RewriteRule ^animals/(.*)/ secondary.php?page=$1
RewriteRule ^animals/(.*) secondary.php?page=$1

, что приводит (правильно) к

http://www.example.com/animals/duck

Проблема в том, что теперь мне нужно перенаправить некоторые из этих страниц на новые. Я пробовал:

Redirect 301 /animals/goose http://www.example.com/animals/fowl

Перенаправление почти работает, но добавляет «? Page = goose» в конец переписанного URI:

http://www.example.com/animals/fowl?page=goose

Я пытался использовать RewriteRule, а также RewriteCond, но, к сожалению, мне не повезло. Любая помощь будет очень признательна.

1 Ответ

0 голосов
/ 23 марта 2011

Попробуйте поместить это перед другими правилами вместо оператора Redirect. R=301 для перенаправления и L сигнализирует, что рассматриваемое правило является последним правилом, которое должно быть обработано.

RewriteRule ^animals/goose /animals/fowl [R=301,L]

Также вы можете легко сделать косую черту (как и любой другой символ) необязательной со знаком вопроса вместо двух правил.

RewriteRule ^animals/(.*)/?$ secondary.php?page=$1
...