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

Просто 301 Redirect / path / to newdomain.com/newpath/

У меня проблема на сайте 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 шаблон.

Перед тестированием вам необходимо очистить кеш браузера.