【问题标题】:Why is this .htaccess not silently redirecting?为什么这个 .htaccess 没有静默重定向?
【发布时间】:2016-06-26 12:23:07
【问题描述】:

谁能告诉我为什么以下内容会明显更改浏览器中的 URL,而不是静默重定向?重定向有效,但很明显。

示例网址: http://domain.com/_test/sportswire/uk/football/huddersfield

...显示查询字符串参数的可见重定向。

RewriteEngine on
RewriteBase /_test/sportswire

#favour naked domain over www
RewriteCond %{HTTP_HOST} ^www\.(.+) [NC]
RewriteRule ^(.*) http://%1/$1 [R=301,NE,L]

#disallow trailing slash
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ /$1 [L,R=301]

###THIS RULE### channel pages - territory/sport/channel/[res type?]
RewriteRule ^(\w+)\/(\w+)\/(\w+)(?:\/(\w+))?$ channel.php?territory=$1&sport=$2&team=$3&res_type=$4 [L,NC,R=301]

#channel pages - with item (if from external referrer) - territory/sport/channel/res_type/"item"/item_id/pretty
RewriteRule ^(\w+)\/(\w+)\/(\w+)\/(\w+)\/story\/\w{11}\/[^\/]+$ channel.php?territory=$1&sport=$2&team=$3&res_type=$4&item=$5 [L,NC,R=301]

我尝试过/阅读过的内容:

  • 删除 R 标志(不高兴;而且我还有其他带有 R 标志的 .htaccess 文件会静默重定向)
  • 添加/删除重写基础(完成;也尝试了绝对基础)
  • 不要使用绝对 URL(我不是)

我相当确信地球上没有什么比 mod-rewrite 更令人困惑的了。

【问题讨论】:

  • 致反对者/接近者:1)问题表明研究工作; 2) 问题清楚地表明了期望的行为是什么——无论是在问题标题还是在它的开头段落中。
  • 您是否尝试清除浏览器的缓存?对不起,不是我的 dv
  • @starkeen - 是的,不快乐。
  • 从最后两条规则中删除,R=301并清除浏览器缓存
  • 永远不要用R=301测试!

标签: php .htaccess redirect mod-rewrite


【解决方案1】:

尝试完全删除[R] 标志,这样服务器就不会通知浏览器更改。

htaccess 更改会立即生效,因此您无需重新启动服务器。但是,由于您之前尝试过R=301,因此您的浏览器可能会记得使用查询字符串直接访问 URL,甚至不会向服务器询问您尝试重定向的 URL。要查看我建议的更改的效果,请在隐身或隐私浏览模式下启动一个新的浏览器实例并测试新规则。

旁注:为什么要转义路径中的所有/?我认为你不需要。

【讨论】:

  • 谢谢,我会试试看的。
【解决方案2】:

[R] 标志不应该在那里。如果可能,请尝试重新启动 Apache,我注意到它有时会有所帮助。 尝试其他浏览器或不同的 URL,它们可以缓存重定向。

【讨论】:

  • 谢谢,我会试试看的。
猜你喜欢
  • 2020-09-03
  • 1970-01-01
  • 2017-06-12
  • 2018-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多