web-dev-qa-db-ja.com

htaccess 301リダイレクトがWordpressサイトで機能しない

.htaccessファイルを使って301個のリダイレクトを設定しようとしています。どういうわけかそれは私のために働いていません。

# 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
# BEGIN 301 Redirects
Redirect 301 /about-us/ http://www.newsite.com/new-page/about-us/
# END 301 Redirects

これが私のWordpressサイトではうまくいかないかもしれない理由を誰かが解明することはできますか?

1
Beau Beau

一般に、PHP側でリダイレクトを処理するほうがはるかに優れています。 (これは準有能な開発者によって実装されていると仮定します)それはより柔軟であり、より少ないオーバーヘッドを使用します。

具体的には、一連のワードプレスルールが all のURLを処理するため、ルールが遅すぎるため、ワードプレスルールの前に移動する必要があります。

1
Mark Kaplun

次のコードを使ってみてください。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^old-page-name(/.*)?$ https://www.myurl.com/new-page-name/ [L,R=301,NC]

RewriteRule ^another-old-page(/.*)?$ https://www.myurl.com/another-new-page/ [L,R=301,NC]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
0
Tejas

このようなリダイレクトについては、このプラグインを使用することをお勧めします。 https://wordpress.org/plugins/redirection/ 高度なREGEXリダイレクトでも簡単に使用およびサポートできます。

私は個人的に.htaccessファイルを、より高度なドメイン関連のリダイレクト、つまりドメインの正規化のためだけに使用しました。

しかし、あなたが本当に.htaccessファイルでこのリダイレクトをしたいのであれば、ここであなたがそれをする必要がある方法があります:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# BEGIN 301 Redirects
Redirect 301 /about-us/ http://www.newsite.com/new-page/about-us/
# END 301 Redirects
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
0
gintsg