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

Странное поведение переадресации 301

301 перенаправляет, но добавляет старый URL в конец нового URL, например:

http://www.example.co.uk/new-dir/new-page/?/old-dir/old-page/

Это мой .htaccess

RewriteEngine On
RewriteCond %{HTTP_HOST} ^example\.co.uk [NC]
RewriteRule ^(.*)$ http://www.example.co.uk/$1 [R=301,L]
Redirect 301 /old-dir/old-page/ http://www.example.co.uk/new-dir/new-page/
RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /index.php?/$1 [L]

Не использовать mod_alias для вашего редиректа; они работают не в том порядке, в котором вы ожидаете, исходя из порядка, в котором вы их разместили в файле. Строка запроса, добавленная к месту перенаправления, исходит из этого последнего RewriteRule.

Замени свой Redirect линия:

RewriteRule ^old-dir/old-page/?$ http://www.example.co.uk/new-dir/new-page/ [R=301,L]

Предполагается, что ваш контекст htaccess является корнем документа.