如何使用 mod_rewrite 删除 URL 中 ?(问号)后面的所有内容?

如何使用 mod_rewrite 删除 URL 中 ?(问号)后面的所有内容?

如何使用 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]

相关内容