У меня проблема на сайте WordPress. Я хочу перенаправить пришедшие URL на новый домен. Я пробовал:
# BEGIN 301 Redirects
Redirect 301 /old-post/ http://www.newdomain.com/new-post/
# END 301 Redirects
Перенаправление не работает, потому что пользователь перенаправлен на:
http://www.newdomain.com/new-post/old-post/
Здесь .htaccess
:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Любые идеи?
Вы на самом деле не указываете URL-адрес, который хотите перенаправить? Однако результат, который вы видите, не должен происходить с опубликованным вами кодом, если только вы не запрашивали /old-post/old-post/
? (Redirect
соответствует префиксу, и все, что находится после совпадения, копируется в конец целевого URL.)
Однако, поскольку у вас есть существующие директивы mod_rewrite, вам следует выполнять это перенаправление с помощью mod_rewrite вместо mod_alias - во избежание потенциальных конфликтов. Директивы mod_rewrite будут обрабатываться до mod_alias, независимо от очевидного порядка директив в вашем .htaccess
файл. т.е. URL сначала переписывается на /index.php
а затем mod_alias перенаправляет на основе первоначального запроса.
Вы должны сделать что-то вроде следующего перед существующие директивы WordPress (т.е. до # BEGIN WordPress
раздел):
RewriteRule ^old-post/$ http://www.newdomain.com/new-post/ [R=301,L]
Обратите внимание на отсутствие префикса косой черты на RewriteRule
шаблон.
Перед тестированием вам необходимо очистить кеш браузера.