从网址中删除特定查询

时间:2015-11-12 22:43:27

标签: .htaccess mod-rewrite

如何从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=aschttp://www.domain.tld/index.php?cat=45

应该只是

http://www.domain.tld/

非常感谢帮助。

1 个答案:

答案 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