1

カスタム開発されたPHPサイトからWordpressにクライアントを移動しています。現在、.htaccessファイルの301リダイレクトを使用して、Wordpressの古い場所を新しい場所に移動しています。それらのいくつかは機能していて、いくつかは機能していません(つまり、「古い」場所を提供します)。ファイルには標準の「かなりパーマリンク」のmod_rewriteセクションがあり、次にすべての301があります。

したがって、ディレクトリのようにリストされている元の場所(index.phpを書き直したもの)を持つものは機能し、明示的に名前が付けられたphpファイルを持つものは機能しません。例:

これは機能します:

Redirect 301 /about/ http://deanchiropractic.com/about-us/

これは(まだdr-jon.phpを提供します):

Redirect 301 /about/dr-jon.php http://deanchiropractic.com/about-us/dr-jon-dean/

私は順序を変えてみました。mod-rewriteセクションの前後に301を入れてみました。また、DirectoryIndex行がある場合とない場合があります。また、Webサーバールートの.htaccessを編集していることも確認しました。

リダイレクトされていないすべてのファイルで301リダイレクトを実行するためにphpを配置するよりも、.htaccessを機能させたいと思います(1つのファイルを使用して確認しました)。

参考までに、すべてを以下に示します。

DirectoryIndex index.php index.html
Redirect 301 /about/dr-dean.php http://deanchiropractic.com/about-us/christophe-dean-dc/
Redirect 301 /about/dr-jon.php http://deanchiropractic.com/about-us/dr-jon-dean/
Redirect 301 /techniques/activator.php http://deanchiropractic.com/chiropractic-techniques/activator-method/
Redirect 301 /techniques/cox-technique.php http://deanchiropractic.com/chiropractic-techniques/cox-technique/
Redirect 301 /techniques/active-release.php http://deanchiropractic.com/chiropractic-techniques/active-release-technique/
Redirect 301 /community/dinner-talk.php http://deanchiropractic.com/get-healthy/
Redirect 301 /community/refer.php http://deanchiropractic.com/get-healthy/
Redirect 301 /resources/forms.php http://deanchiropractic.com/forms/
Redirect 301 /resources/faq.php http://deanchiropractic.com/faq/
Redirect 301 /resources/articles/low-back-pain-relief.php http://deanchiropractic.com/low-back-pain-relief/
Redirect 301 /resources/articles/about-the-activator-method.php http://deanchiropractic.com/achieve-wellness-with-the-activator-method/
Redirect 301 /resources/articles/spinal-disc-treatment.php http://deanchiropractic.com/spinal-disc-treatment/
Redirect 301 /resources/articles/headache-relief-benefits.php http://deanchiropractic.com/headache-relief/
Redirect 301 /resources/articles/carpal-tunnel-relief.php http://deanchiropractic.com/carpal-tunnel-relief/
Redirect 301 /resources/articles/neck-pain-relief.php http://deanchiropractic.com/neck-pain-relief/
Redirect 301 /testimonials.php http://deanchiropractic.com/reviews/
Redirect 301 /contact.php http://deanchiropractic.com/contact-us/
Redirect 301 /about/    http://deanchiropractic.com/about-us/
Redirect 301 /techniques/   http://deanchiropractic.com/chiropractic-techniques/
Redirect 301 /community/    http://deanchiropractic.com/get-healthy/
Redirect 301 /resources/    http://deanchiropractic.com/forms/
Redirect 301 /resources/articles/   http://deanchiropractic.com/category/articles/
# 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

私は広く検索しましたが、このサイトで正確な問題に一致するものを見つけることができません...プロセスで.htaccessについて多くのことを学びましたが(まだn00b tho)。ありがとう....

4

1 に答える 1

0

It's possible that mod_alias and mod_rewrite are interferring with each other because they both get applied to the same URL in the processing pipeline. In this case, it may be that the URI is changed and a redirection is flagged by mod_alias (via the Redirect directive) but then mod_rewrite does its thing and rewrites the URI to get routed through index.php, but the URI is flagged for a redirect so at the end of the pipeline, you have a mangled URI that gets sent as a redirect. You can avoid this by sticking with just mod_rewrite and using the L flag so the wordpress rules don't get applied:

RewriteEngine On
RewriteRule ^/?about/dr-dean.php http://deanchiropractic.com/about-us/christophe-dean-dc/ [L,R=301]
RewriteRule ^/?about/dr-jon.php http://deanchiropractic.com/about-us/dr-jon-dean/ [L,R=301]
RewriteRule ^/?techniques/activator.php http://deanchiropractic.com/chiropractic-techniques/activator-method/ [L,R=301]

etc...

于 2012-10-19T20:44:00.177 に答える