2

htaccess で次の正規表現を使用しています。

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([A-Za-z0-9_-\s]+)/([A-Za-z0-9_-\s]+)/?$ index.php?param1=$1&param2=$2 [L,NC]

問題は、これがこれのどのバリエーションでも機能することです。

example.com/search/test product 123
example.com/search/test+product+123
example.com/search/testproduct123
example.com/search/test%20product%20123

しかし、ピリオド (.) を入れると一致せず、404 メッセージが表示されます。私は正規表現の初心者で、[A-Za-z0-9_-\s] に追加してすべての文字を許可する構文がわかりません。[.*] はうまくいくと思いますが、それでも 404 になります。

更新しました:

では、これをどのように受け止めますか:

^([A-Za-z0-9_-\s]+)/([A-Za-z0-9_-\s]+)/?$

そして、次のような文字列を認識できるようにします。

search/st.+charles
4

2 に答える 2

4

ドット (.) を許可するには、エスケープする必要があるため、\.代わりに. を使用し.ます。abc[^abc]以外のすべての文字を許可するために使用することもできます。

編集:

パスにドットを許可するには、次を使用します。

^([A-Za-z0-9_-\s\.]+)/([A-Za-z0-9_-\s\.]+)/?$

于 2012-08-27T15:01:20.853 に答える
0

RewriteRule ^([a-zA-Z0-9-]+)([/]*)$

于 2012-08-27T16:23:53.293 に答える