我试图删除一个完整的变量(但只有当它等于1时)。我怎样才能做到这一点?基本上我想删除字符串"& page = 1"。这就是我的意思:
如果页面= 1:
301从BEFORE重定向到AFTER
之前:https://www.fubar.com/search.php?cs=tt&st=ss&page=1
之后:https://www.fubar.com/search.php?cs=tt&st=ss
如果页面= 2或任何其他数字除了1(没有任何更改或转发 - 没有301):
之前:https://www.fubar.com/search.php?cs=tt&st=ss&page=2
之后:https://www.fubar.com/search.php?cs=tt&st=ss&page=2
我已尝试过一些建议和搜索,但似乎没有任何工作......
答案 0 :(得分:1)
尝试使用以下规则,
RewriteEngine On
RewriteCond %{QUERY_STRING} !page=1$
RewriteRule ^ https://www.fubar.com/search.php?%{QUERY_STRING}&page=1 [R=301,L,END]
RewriteCond %{QUERY_STRING} !page=1$
RewriteRule ^ search.php?%{QUERY_STRING}&page=1 [L]
答案 1 :(得分:0)
您可以使用以下内容:
RewriteEngine on
# if &page=1
#redirect to remove the &page perm
RewriteCond %{THE_REQUEST} /search\.php\?cs=tt&st=ss&page=1\s [NC]
RewriteRule ^.+$ https://www.fubar.com/search.php?cs=tt&st=ss [NE,L,R]
这会将您的网址从https://www.fubar.com/search.php?cs=tt&st=ss&page=1
重定向到相同的网址,但最后没有page
参数(例如:https://www.fubar.com/search.php?cs=tt&st=ss
)。
请注意,R
是302临时重定向标记。我正在使用它来测试规则并避免浏览器缓存。您可以将R
更改为R=301
以使重定向永久化。
答案 2 :(得分:0)
我在这里找到了一个解决方案:htaccess 301 redirect rule to remove part of a query string from URLs, but leave the rest)
这是我最终使用的代码:
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)&?page=1(.*)$
RewriteRule ^/?search\.php$ /search.php?%1%2 [R=301,NE]