0

2 つのページを別の URL にリダイレクトするように依頼されました。既存の WP 書き換えルールにより、URL の末尾にバックスラッシュが付く以外は機能しています。これらのページをリダイレクトする必要がありますが、リダイレクトしないページの WP ルールはそのままにしておきます。既存の WP ルールは次のとおりです。

# 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

追加したい:

Options +FollowSymLinks
RewriteEngine on

Redirect 301 /*old url* http://*new url*/about.html
Redirect 301 /*old url* http://*new url*.com/tour.html

これを行うと、新しい url.com/tour.html/ にリダイレクトされ、末尾のバックスラッシュが問題を引き起こしています

私はまったくの .htaccess 初心者です。ありがとう、マット

4

1 に答える 1

0

これは、mod_alias と mod_rewrite が相互に干渉しているケースです。これは、どちらも URI ファイル マッピング パイプラインの一部であるためです。したがって、mod_alias がその処理 (Redirectディレクティブ) を実行し、リダイレクトする URI にフラグを立てると、mod_rewrite がその処理を実行して書き換えます。 URI。そのため、URI ファイル マッピング パイプラインの最後に 301 リダイレクトがありますが、URI は mod_rewrite によって破損しています。

代わりに mod_rewrite をそのまま使用して、wordpress のルールがまったく適用されないようにすることができます。また、wordpress ルールの前にリダイレクトを追加する必要があるため、追加する# BEGIN WordPressに:

RewriteEngine On
RewriteRule ^/?old_url http://new_url/about.html [L,R=301]
RewriteRule ^/?old_url2 http://new_url/tour.html [L,R=301]
于 2012-09-20T16:26:57.083 に答える