検索

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

htcaccess 書き換えルールが機能しない

私は、Web サイトのルートで URL を書き換えようとしているプロジェクトに取り組んでいます。現在の .htaccess は次のとおりです

リーリー

私の Web サイトでは書き換えが有効になっています。 htaccess テスターでコードをチェックしたところ、正しい値が表示されました。

しかし、たとえば screenshot-of-the-week/screenshot/123 にアクセスすると、404 ページが表示されます。 今週のスクリーンショット/スクリーンショット/ にアクセスすると、正常に動作します。

また、「実際の」URL に手動でアクセスすると、期待どおりに動作します: screenshot-of-the-week/screenshot/index.php?id=123

何が問題なのか分からず、.htaccess を別のフォルダーに移動し、もちろんパスを編集してみましたが、成功しませんでした。

他のトラブルシューティングのヒントを提供できる人はいますか?リダイレクトが実際にバックグラウンドで何を行っているかを確認するにはどうすればよいですか?

P粉848442185P粉848442185302日前411

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

  • P粉218775965

    P粉2187759652024-01-17 17:55:15

    このルールの「問題」は、書き換えられた URL とも一致する (具体的には、[^/] index.php と一致する)ため、再度書き換えられることです。 /screenshot-of-the-week/screenshot/index.php?id=index.php (id=123 パラメータはオーバーライドされます) まで時間がかかります。では、スクリプトは (Apache ではなく) 404 応答を生成すると予想されますか?

    この問題を解決するには、正規表現をより具体的にするか、END フラグ (Apache 2.4) を使用して、書き換えエンジンが余分なループ (および 2 回目の書き換え) を実行しないようにする必要があります。

    この例では、数値を渡しています。そのため、数値のみを期待している場合は、数値のみが一致します。

    ###例えば:### リーリー

    末尾の

    $

    も正規表現に追加したことに注意してください。そうしないと、何でも を URL に追加しても同じになるため、サイトが悪用される可能性があります。リソースは次のようになります。提供されました。 (元のルールに / を追加すると、同じ応答が生成されます。) (

    .htaccess

    ファイルがドキュメント ルートにあるとします。)

    MWL テスターは、ファイルに対して 1 回のパスのみを実行します。これは、実際の Apache サーバーの動作とは異なります。したがって、MWL テスターは書き換え/リダイレクト ループを検出できません。

    今週のスクリーンショット/スクリーンショット/

    にアクセスすると、ルールは処理されません (正規表現が一致しません)。 mod_dir は DirectoryIndex ドキュメント (index.php) を提供しますが、id パラメータは提供しません。

    返事
    0
  • キャンセル返事