ホームページ  >  に質問  >  本文

htaccess を使用してディレクトリの URL を PHP ファイルに書き換えます

htaccess ファイルを使用して単純な書き換えルールを実行しようとしています。 XAMPP を使用してローカルホストでこのページをホストしています:

リーリー

この操作をリクエストする可能な方法は次のとおりです:

リーリー

私がやりたいのは、次の URL のリクエストを上記の URL に書き換えることです。 リーリー

これを試してみましたが、404 エラーが発生しました。

リーリー

いくつかの調査の後、別のオプションを試しました:

リーリー

しかし、現在は内部リダイレクトの問題が多すぎます

P粉957723124P粉957723124306日前414

全員に返信(1)返信します

  • P粉343408929

    P粉3434089292024-01-11 16:05:46

    これは、「内部リダイレクトが多すぎる」原因となる最初のルール (「.php 拡張子を隠す」) です。これは、services/Boat-Dealers.php を (誤って) ターゲットにしているためです。リクエストは < code> に書き換えられます。 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 ファイルが /naveesh/.htaccess (ドキュメント ルートではない) にあると仮定すると、完全な .htaccess ファイルは次のようになります。このような:### リーリー

    replacement

    文字列のスラッシュ接頭辞が削除されていることに注意してください。 No

    RewriteBase

    ディレクティブはここでは必要ありません。相対 置換 は、.htaccess ファイルが配置されているディレクトリを基準としています。 MultiViews

    が無効になっていると、このルールが期待どおりに機能しないため、必ず無効にしてください。リクエストは、

    serv URL パラメーターなしで services.php として書き換えられます。 (一部の共有サーバーでは複数のビューが有効になっている場合があり、多くの競合が発生する可能性があります。) さらに、リクエストされた URL ではオプションの末尾のスラッシュを許可すべきではありません。これにより、同じコンテンツを提供する 2 つの異なる URL (末尾にスラッシュがあるものと末尾にスラッシュがないもの) があるため、コンテンツの重複の問題が発生する可能性があります。 URL の例には末尾のスラッシュがありませんが、なぜこれを含める必要があるのでしょうか。オプションの末尾のスラッシュを許可する必要がある場合 (たとえば、非正規 URL を指している不正な受信リンクがある場合)、あるリンクを別のリンクに外部的にリダイレクトする必要があります。

    返事
    0
  • キャンセル返事