2016-04-30 7 views
1

にリダイレクトではない、私はそれを使用した後、私の.htaccessファイル:
サブディレクトリがインデックス

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 

に次のコードを使用し、それが最終的には私がいないファイル拡張子、私の目標、
が、その後のサブディレクトリを削除することができそれぞれのインデックスファイルにリダイレクトされる時間が長くなり、代わりに 'Forbidden'と '404'というメッセージが表示されます。 その後、私はリダイレクトループに捕まってしまった

Redirect 301 /subfolder http://www.domain.com/subfolder/index 

は、さらにソースコードでそれらを削除した後、彼らが行われている:

私は、手動での.htaccessでリダイレクトを作ってみました。 .htaccessの使用経験がほとんどないことも指摘しておきます。

答えて

2

パーマネントリダイレクトを使用したテストの世界へようこそ:間違いを犯し、ブラウザキャッシュをクリアするまでエラーを繰り返します。

まず、リダイレクトを削除し、ブラウザのキャッシュをクリアします。もう1つは、変更したいリクエストだけでなく、すべてのリクエストにルールが適用されているとします。

あなたが特定した問題は、ルールに一致するディレクトリへの要求であり、次に書き直されたという問題でした。 http://domain.com/sub/へのリクエストはhttp://domain.com/sub/.phpに書き換えられます。今はそれが存在するものではありません。無限再帰からあなたを救う唯一のものは、あなたのURLのドットのチェックです。

私たちはそれをどのように修正しますか?さて、要求されたファイルが開始するディレクトリでないかどうかを確認します。ディレクトリであればURLを書き換えません。残りの部分はDirectoryIndexで処理します。無限再帰を防ぐために、URLがすでに.phpで終わっているかどうかをテストできますが、この場合はすでに処理しています。

+0

大変ありがたいことに、これは完全に機能していましたが、.htaccessに関する洞察と、ルールを削除しても効果がないように見える理由がわかりました。私のためにそれをクリアしてくれてありがとう。受け入れられました。 – Fate

-1

このリダイレクトで試してください。これは、301が永続的なリダイレクトであり、ブラウザに保存されるため、ループに巻き込まれました。

RedirectMatch 301 /subfolder(.*) //$1 
関連する問題