如何从URL中删除特定查询字符串?
我在这里有任何我已经清理过的旧目录,放入一个新脚本,转移所有内容,嘿,它现在看起来很好,是的,它是我想要的。但当我检查旧链接和页面时,我发现了一些最后剩下的垃圾:
http://www.domain.tld/index.php?page=1&cat=18&u_sort=uptime&u_order=asc
http://www.domain.tld/index.php?cat=45
所以我试图通过htaccess删除它们并删除查询字符串
试用1 - 漂亮,但不能再通过表单添加新链接,更改为:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^?]*)\?
RewriteRule (.*) /? [R=301,L]
试用2 - 还有,添加了一个链接,但是下一个窗口不起作用,因为它正常添加了一个查询字符串并被删除了:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^?]*)\?
RewriteRule (.*) /$1? [R=301,L]
所以现在的想法是简单地只删除这两个查询字符串,并让其他所有内容保持不变。怎么做?
http://www.domain.tld/index.php?page=1&cat=18&u_sort=uptime&u_order=asc 和 http://www.domain.tld/index.php?cat=45
应该只是
非常感谢帮助。
答案 0 :(得分:1)
尝试:
RewriteEngine on
RewriteCond %{THE_REQUEST} /index\.php\?cat=([^\s]+) [NC]
RewriteRule ^ /? [NC,L,R]
RewriteCond %{THE_REQUEST} /index\.php\?page=([^&]+)&cat=([^&]+)&u_sort=([^&]+)&u_order=([^\s]+) [NC]
RewriteRule ^ /? [NC,L,R]
这将重定向:
http://example.com/index.php?cat=foo
或
http://example.com/index.php?page=123&cat=foo&u_sort=bar&u_order=foo
到
http://example.com