htaccess ファイルを使用して単純な書き換えルールを実行しようとしています。 XAMPP を使用してローカルホストでこのページをホストしています:
この操作をリクエストする可能な方法は次のとおりです:
私がやりたいのは、次の URL のリクエストを上記の URL に書き換えることです。 リーリー
リーリー
これは、「内部リダイレクトが多すぎる」原因となる最初のルール (「.php 拡張子を隠す」) です。これは、services/Boat-Dealers.php を (誤って) ターゲットにしているためです。リクエストは に書き換えられます。 services/Boat-Dealers.php.php などこれは、condition (常に成功します) では、最終的に何をオーバーライドするかがチェックされないためです。 REQUEST_FILENAME は期待したものではありません。 (ただし、これらのルールの順序を逆にすれば、この差し迫った問題は解決します。)
services/Boat-Dealers.php
REQUEST_FILENAME
次のコメントを参照してください using-apache-rewrite-rules-in-htaccess-to-remove-html-causing-a-500-error" title=" での Apache rewrite の使用。 htaccess ルールの delete.html を記述すると 500 エラーが発生します">ServerFault の問題 に記載されているとおり)。
.htaccess ファイルが /naveesh/.htaccess (ドキュメント ルートではない) にあると仮定すると、完全な .htaccess ファイルは次のようになります。このような:### リーリー
ファイルが
(ドキュメント ルートではない) にあると仮定すると、完全な
ファイルは次のようになります。このような:### リーリー
文字列のスラッシュ接頭辞が削除されていることに注意してください。 No
ディレクティブはここでは必要ありません。相対 置換 は、.htaccess ファイルが配置されているディレクトリを基準としています。 MultiViews
置換
serv URL パラメーターなしで services.php として書き換えられます。 (一部の共有サーバーでは複数のビューが有効になっている場合があり、多くの競合が発生する可能性があります。) さらに、リクエストされた URL ではオプションの末尾のスラッシュを許可すべきではありません。これにより、同じコンテンツを提供する 2 つの異なる URL (末尾にスラッシュがあるものと末尾にスラッシュがないもの) があるため、コンテンツの重複の問題が発生する可能性があります。 URL の例には末尾のスラッシュがありませんが、なぜこれを含める必要があるのでしょうか。オプションの末尾のスラッシュを許可する必要がある場合 (たとえば、非正規 URL を指している不正な受信リンクがある場合)、あるリンクを別のリンクに外部的にリダイレクトする必要があります。
URL パラメーターなしで
として書き換えられます。 (一部の共有サーバーでは複数のビューが有効になっている場合があり、多くの競合が発生する可能性があります。)
さらに、リクエストされた URL ではオプションの末尾のスラッシュを許可すべきではありません。これにより、同じコンテンツを提供する 2 つの異なる URL (末尾にスラッシュがあるものと末尾にスラッシュがないもの) があるため、コンテンツの重複の問題が発生する可能性があります。 URL の例には末尾のスラッシュがありませんが、なぜこれを含める必要があるのでしょうか。オプションの末尾のスラッシュを許可する必要がある場合 (たとえば、非正規 URL を指している不正な受信リンクがある場合)、あるリンクを別のリンクに外部的にリダイレクトする必要があります。
これは、「内部リダイレクトが多すぎる」原因となる最初のルール (「.php 拡張子を隠す」) です。これは、
services/Boat-Dealers.php
を (誤って) ターゲットにしているためです。リクエストは に書き換えられます。 services/Boat-Dealers.php.php などこれは、condition (常に成功します) では、最終的に何をオーバーライドするかがチェックされないためです。REQUEST_FILENAME
は期待したものではありません。 (ただし、これらのルールの順序を逆にすれば、この差し迫った問題は解決します。)次のコメントを参照してください using-apache-rewrite-rules-in-htaccess-to-remove-html-causing-a-500-error" title=" での Apache rewrite の使用。 htaccess ルールの delete.html を記述すると 500 エラーが発生します">ServerFault の問題 に記載されているとおり)。
ルールの順序も間違っています。.htaccess
replacementファイルが
/naveesh/.htaccess(ドキュメント ルートではない) にあると仮定すると、完全な
.htaccessファイルは次のようになります。このような:### リーリー
文字列のスラッシュ接頭辞が削除されていることに注意してください。 No
RewriteBaseディレクティブはここでは必要ありません。相対
MultiViews
が無効になっていると、このルールが期待どおりに機能しないため、必ず無効にしてください。リクエストは、置換
は、.htaccess ファイルが配置されているディレクトリを基準としています。serv
URL パラメーターなしで
services.phpとして書き換えられます。 (一部の共有サーバーでは複数のビューが有効になっている場合があり、多くの競合が発生する可能性があります。)
さらに、リクエストされた URL ではオプションの末尾のスラッシュを許可すべきではありません。これにより、同じコンテンツを提供する 2 つの異なる URL (末尾にスラッシュがあるものと末尾にスラッシュがないもの) があるため、コンテンツの重複の問題が発生する可能性があります。 URL の例には末尾のスラッシュがありませんが、なぜこれを含める必要があるのでしょうか。オプションの末尾のスラッシュを許可する必要がある場合 (たとえば、非正規 URL を指している不正な受信リンクがある場合)、あるリンクを別のリンクに外部的にリダイレクトする必要があります。