簡単な質問のようです。しかし、私は単純に理解していない:単純な正規表現はhtaccessで動作しません
RewriteEngine On
RewriteRule ^m(.+)$ ?s=$1
しかし、これにはない:
RewriteEngine On
RewriteRule ^(.+)$ ?s=$1
それは、内部サーバーエラーを返すhtaccessのルールの
この作品は、作業を行います。その正規表現で何が問題なのですか?働くために何を変えなければならないのですか?
簡単な質問のようです。しかし、私は単純に理解していない:単純な正規表現はhtaccessで動作しません
RewriteEngine On
RewriteRule ^m(.+)$ ?s=$1
しかし、これにはない:
RewriteEngine On
RewriteRule ^(.+)$ ?s=$1
それは、内部サーバーエラーを返すhtaccessのルールの
この作品は、作業を行います。その正規表現で何が問題なのですか?働くために何を変えなければならないのですか?
「うまくいかない」とはどういう意味なのでしょうか?正確には何かわかりませんが、書き換えループに詰まっている可能性があります。
RewriteEngine On
RewriteCond %{REQUEST_URI} !^?s=
RewriteRule ^(.+)$ ?s=$1
私はこれをテストしていませんが、何すでにSパラメータがなかった場合にのみ書き換えされて行う必要があり、コメントを追加しました:
これを試してみてください?すること。
まあ、RewriteCondsで実際のクエリ文字列を探すこともできます。試してみることができます:
RewriteEngine On
RewriteCond %{QUERY_STRING} !s=
RewriteRule ^(.+)$ ?s=$1
これは動作しません。 'RewriteRule ^([a-z] +)$?s = $ 1'を使って解決しました。つまり、ドットは正規表現から消えます。しかし、疑問は残っています:なぜ '^(。+)$'は働かないのですか? –
おそらく同じ理由で、ドットには?=部分も含まれているので、書き直しを続けようとします(つまり、s =?s =、?s =?s =?s =など)。それを文字で始まるURIに限定することによって、?を除いて、私が作ったのと同じことを本質的にやっています。 –
私は私が間違っていたことを知っていると思う、私は脱出していたはずですか? (これは正規表現で特別な機能を持っています)。 –