重定向后,我得到页面:站点“xxx”已重定向太多次

问题描述 投票:0回答:1

这本质上是同一个页面,我只需要从使用 GET 参数的 url 重定向到不带此参数的 url。

RewriteCond %{QUERY_STRING} ^category=([^&]+)&key=news-category$
RewriteRule ^news/$ /news/%1/? [R=301,L]
php .htaccess modx
1个回答
0
投票
RewriteCond %{QUERY_STRING} ^category=([^&]+)&key=news-category$
RewriteRule ^news/$ /news/%1/? [R=301,L]

此规则应仅适用于来自客户端的直接请求,而不适用于(通过其他规则)重写的请求 - 这可能是导致重定向循环的原因。您需要在上述规则上添加一个额外的 condition

RewriteCond
指令)。例如:

RewriteCond %{ENV:REDIRECT_STATUS} ^$
:

此规则也应该出现在

.htaccess
文件中,在其他 重写之前。

此外,如果您使用的是 Apache 2.4,请考虑使用

QSD
(查询字符串丢弃),而不是附加空查询字符串(以便删除原始查询字符串)。
QSD
标志完全删除查询字符串,而尾随的
?
设置一个空查询字符串,该字符串依赖于用户代理(浏览器)在重定向请求中删除它。

在测试之前清除浏览器缓存,并使用 302(临时)重定向进行测试,以避免潜在的缓存问题。

© www.soinside.com 2019 - 2024. All rights reserved.