2016-07-12 25 views
1

htaccessファイルのコーディングの仕組みについてはあまり気にしませんが、ルートディレクトリに次のhtaccessコードがあり、url.htmlからurl.phpへのリダイレクトを担当しています:ウェブサイト上のすべてのファイル名は、「PHP」に「HTML」からオーバー変更されていると私は変更前に行われたすべてのブックマークやリンクがオーバー有効のままにしたいのでウェブサイトhtaccessリダイレクトワードプレスとの競合

RedirectMatch permanent ^(.*)\.htm(l?)$ $1.php 


RewriteEngine on 
RewriteRule ^index\.htm$ index.php [NC,R] 

このコードは重要です。

問題は、上記のhtaccessコードは、「urlを開こうとしたときにリダイレクトが多すぎます」というメッセージを表示して、wordpress blogが開かないようです。

明らかに、何らかのリダイレクトループが発生していますが、私の人生は問題の内容を正確に解決できません。

私のwordpressのディレクトリ(/ブログ)でのhtaccessファイルはWordPress用の通常が含まれています

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

上記のhtaccessファイルが削除されると、wordpressのインデックスファイルが正常に動作しますが、ワードプレスのhtaccessファイルを書き込むためポストURLのルールは、もはや動作しません。

要約すると、リダイレクトループを作成している2つのhtaccessファイル(最初はルートディレクトリ、2番目は/ blogディレクトリ)に競合があると思います。

私がこれをどのように解決するかについてのアイデアは、非常によく受け取ります。

ありがとうございます。書き換えループを防止するために

+0

とに、RedirectMatchとのRewriteRuleの両方を交換してくださいあなたは、フォルダを分割し、あなたのapacheのhttpd.confをリセットしようとしたことがありますか? – arcee123

+0

あなたの提案をありがとう。私は正直に言うと、私はそれをどうやって行うのか分かりません。 – user1514406

+0

あなたはLinuxに入っています、はい? – arcee123

答えて

1

は、次のように使用することができます。

RewriteEngine on 
#stop internal redirection 
RewriteCond %{ENV_REDIRECT_STATUS} 200 
RewriteRule^- [L] 
#Redirect /foo.html to /foo.php 
RewriteRule ^(.*?)\.html?$ /$1.php [L,R] 

上記ルール

+1

ブリリアント!完璧に働いた。どうもありがとうございます!! – user1514406

+0

ちょうど最後の質問です。私の元の質問の最初のhtaccessコードは 'htm'から 'php'にリダイレクトされましたが、これはありません。どのように私はHTMLと 'htm'から 'php'にリダイレクトできますか?ありがとう。 – user1514406

+1

解決済み:RewriteRuleを次のように変更しました。RewriteRule ^(。*?)\ .htm(l?)$ /$1.php [L、R] – user1514406

関連する問題