我在.htaccess文件中编写了一个代码,用于搜索引擎友好的URL目的:
RewriteRule ^games/(.*\S)$ helper/Games.php?p=$1 [L]
如您所见,games/
之后的所有内容都会重写为helper/Games.php?p=
但我不希望$_GET['p']
包含?
或/
。
例如,下面的网址 NOT 应按我的规则重写:
example.com/games/Test?Test
example.com/games/Test/Test
请指导我找到正确的正则表达式。 感谢。
答案 0 :(得分:0)
您只需要否定您不想要的值集,而不是使用通配符.
。所以:
RewriteRule ^games/([^/]*[^\s/])$ helper/Games.php?p=$1 [L]
由于查询字符串不是匹配的一部分,因此您首先想要:
RewriteCond %{QUERY_STRING} ^$
答案 1 :(得分:0)
在重写url之前,您需要匹配空的QUERY_STRING:
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^test/([^/]+)$ helper/Gampes.php?p=$1 [L]