Apache .htaccess:如果不是`?id =(。*)`,如何从URL中删除问号?

时间:2011-02-03 00:05:19

标签: apache .htaccess mod-rewrite url-rewriting rewrite

如何使.htaccess 从网址中移除问号 ?id=(.*)

# Rewrite for ?id=(.*)
RewriteCond %{QUERY_STRING} ^id=(.*)$
RewriteRule .*$ %{REQUEST_URI}%1? [R=301,L]

# It does not work out on this way
RewriteCond %{QUERY_STRING} !=""
RewriteCond %{QUERY_STRING} !^id=.*
RewriteRule .*$ %{REQUEST_URI}%1? [R=301,L]

3 个答案:

答案 0 :(得分:1)

这是正确的规则:

RewriteCond %{THE_REQUEST} ^[A-Z]+\ /([^?#\ ]*)\?[^\ ]*\ HTTP/ [NC]
RewriteCond !{QUERY_STRING} id
RewriteRule .*$ %{REQUEST_URI}? [R=301,L]

<强>更新

# Query rewrite exceptions
RewriteCond %{QUERY_STRING} !callback=.*

答案 1 :(得分:0)

这有用吗?

RewriteCond %{QUERY_STRING} ^.+$
RewriteCond %{QUERY_STRING} !^id=
RewriteRule ^(.*)$ $1?%1 [R=301,L]

提示:在测试期间,使用302重定向而不是301,因为浏览器会存储301重定向。完成测试后,您最终可以切换到经典301.

答案 2 :(得分:0)

如果您需要http://site.com/page/?YOURSTRING=blabla

重定向到http://site.com/page/

然后看到此链接 - https://stackoverflow.com/a/15680832/2215124