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

htaccess ではパラメータを使用したサブディレクトリへのアクセスが許可されません

seo URL 用の htaccess を作成しようとしています。htaccess を作成しました。パラメーターを持つサブフォルダーを除いて、すべての URL が正常に動作し、サイト フォルダーにリダイレクトされます。

sitefolder は私のルート ディレクトリであり、すべてのファイルがそこにあります。

例: URL は次のようになります:

リーリー

htaccess では次のようになります:

リーリー

最初のパラメータは id で、2 番目のパラメータは slug ですが、これら 2 つの URL はどちらも url には入りません。

これは私の htacces コードのすべてです:

リーリー

これが subcat.php のパラメータを取得する方法です。エラー時にインデックスにリダイレクトしないので、php が原因ではないと思います:

ああああ

P粉785905797P粉785905797176日前353

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

  • P粉450079266

    P粉4500792662024-03-31 14:53:01

    subcat.php が呼び出される場合 (コメントで述べたように)、.htaccess は問題ではありません。ただし、投稿したコードには index.php へのリダイレクト (または何らかのリダイレクト) はありません。

    ただし、次の行では実行時エラーがあるようです:

    リーリー

    is_numeric() は、引数が数値かどうかをテストしてブール値を返すだけで、期待される変数の数値を返しません。したがって、q の値に関係なく、SELECT は常に失敗します (または最初の項目が返されます)。

    指定した URL パラメータの実際の値を取得するには、次のようなものが必要になる場合があります:

    リーリー

    ただし、最初にこれらの URL パラメーター (つまり、$_GET 変数) が渡されていることを確認する必要があります。そうでない場合、スクリプトは E_NOTICE メッセージを発行します。


    更新:

    RewriteRule ディレクティブと競合します:

    http://localhost/sitefolder/subcat/38/web-design をリクエストすると、リクエストを detail.php? に書き換える最初のルールによって捕捉されます。ご想像のとおり、subcat.php ではなく q=subcat/39&slug=web-design です。 q=subcat/39 が無効である可能性があるため、この に失敗する可能性があります (/sitefolder/ へのリダイレクトがトリガーされると思います)。 < /p>

    競合を避けるために、これらのルールの順序を変更するか、正規表現をより具体的にする必要があります。例えば。 q が数値 ID であると想定されている場合は、文字通り anything (.*) ではなく、数値 (\d < /code>) のみと一致します。 )、それが現在一致しているものです。

    正規表現には文字列の末尾アンカーも含める必要があります。そうしないと、これらのルールが書き換えられた URL にも一致し、不要なループが発生します。例えば:### リーリー

    また、ここで

    NC フラグを使用することにも疑問を持ちます。これは、contact-usCONTACT-US (およびすべてを許可することによって渡される可能性があるため)コンテンツ間)同じリソースにアクセスします。 < 来创建重复内容问题/code> ###まとめ###

    つまり、ルールは次のようになります。

    リーリー

    (

    \w

    [a-zA-Z0-9_] の短縮文字クラスです。) 正規表現をより具体的にすることで、競合を回避できます。これらの命令は上から下に実行されます。最初に一致したルールが優先されます。

    返事
    0
  • キャンセル返事