1

同じドメイン名を使用して、現在の静的サイトをWordpressに移動中です。

古いサイトと新しいサイトの両方のコンテンツがルートフォルダーにあり、ファイル名も同じですが、新しい(Wordpress)サイトでは、現在のサイトに存在する.php拡張子を削除し、Wordpressのように末尾にスラッシュを追加しましたパーマリンク。

したがって、すべての古いページをリダイレクトする必要があります(たとえば):/ contact-us.php-> / contact-us /

私は次のような十分に文書化されたオプションを試しました(そしてこれのバリエーション):

RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)\.php$ /$1 [R=301,L]

しかし、これはWordpressの.htaccessルールと矛盾しているようです。

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L] 
</IfModule>

www.site.com/contact-us.phpにアクセスしようとすると、無限ループまたはwww.site.com/indexへのリダイレクト(.phpなし、末尾のスラッシュなし)が表示され、Wordpressはこれを次のように表示します。 404ページ。

私は最初の書き換え条件のセットを使用して、または使用せずに試しました(Wordpressルールで重複していることがわかります)。また、Wordpressルールの前後にルールを配置しました。喜びはありません。私もここ数時間グーグルをしていますが、この特定の問題に誰も取り組んでいないようです。私は通常、検索して探しているものを見つけるので、実際に投稿するのは必死です(そしてそれが私の最初の投稿である理由です!)

誰かが手伝ってくれるなら、私はとても感謝しています。

4

2 に答える 2

0

phpサフィックスが原因で、.htaccessリダイレクトを試行するとループが発生するようです。多分誰か他の人が解決策を知っています。

しかし、リダイレクト«WordPressプラグインと呼ばれるプラグインを試してみてください。好奇心から、contact-us.phpからcontact-us /へのリダイレクトを試みましたが、正常に機能しました。プラグインは.htaccessに書き込むのではなく、phpを介してリダイレクトします。これが違いである可能性があります。

私はいつもプラグインを使用して、ほとんどの場合404をログに記録し、いくつかのリダイレクトを実行します。サイトのオーバーヘッドはそれほどかかりません。

パーマリンクが手動で変更された投稿/ページへの自動リダイレクトが設定されるため、必ず[URL監視]を実行しないように[オプション]を設定してください。また、404ログを1日か2日に設定します。これは、ログがすぐに大きくなり、データベーステーブルが巨大になる可能性があるためです。

于 2012-11-09T03:43:03.807 に答える
0

これを使用してみてください:

 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /

 #Rewrite /something.php to /something/
 RewriteRule (.*)/(.*)\.php$ $1/$2/ [R=301,L]

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

このメソッドは次のように書き直します: /contact-us/test/hello.php->/contact-us/test/hello/

サブディレクトリの書き換えが必要ない場合は、6行目を次のように置き換えます。

RewriteRule /(.*)\.php$ /$1/ [R=301,L]

于 2012-11-09T03:45:23.120 に答える