如何使用 mod_rewrite 删除 URL 中 ? (问号) 后面的所有内容?
例如:
http://127.0.0.1/ALL_FILES.php?test=1
经过 mod_rewrite 后:
http://127.0.0.1/ALL_FILES.php
对于 php,这意味着 $_GET 超级全局变量将始终为空。
答案1
引自mod_rewrite文档:
Pattern 不会与查询字符串匹配。相反,您必须使用带有 %{QUERY_STRING} 变量的 RewriteCond
大致如下:
RewriteCond %{QUERY_STRING} .
RewriteRule ^/index.php /index.php? [L,R]
应该可以满足您的需要。如果您不关心向用户显示的内容,而只关心传递给 php 的内容,则可以省略 R 标志。
答案2
RewriteCond %{QUERY_STRING} .+
RewriteRule ^(.*)$ /$1? [R=301,L]