Я использую это регулярное выражение на моем htaccess:
RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([A-Za-z0-9_-\s]+)/([A-Za-z0-9_-\s]+)/?$ index.php?param1=$1¶m2=$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
Чтобы разрешить точку (.), Вам нужно ее избежать, поэтому используйте \.
а не .
, Вы также можете использовать [^abc]
чтобы разрешить все символы, но abc .
Чтобы разрешить точки в пути, используйте это:
^([A-Za-z0-9_-\s\.]+)/([A-Za-z0-9_-\s\.]+)/?$
RewriteRule ^ ([a-zA-Z0-9 -] +) ([/] *) $