【问题标题】:Need some help leveraging %{HTTP_REFERER} in apache在 apache 中利用 %{HTTP_REFERER} 需要一些帮助
【发布时间】:2021-01-26 19:50:56
【问题描述】:

我们有一个用例,如果请求请求 URI 以 /<path-info>(.*) 开头,则将用户重定向到 /fr-fr/404.hml。并且初始请求具有像https://{host}/fr-fr/home.html 这样的引荐来源。我有以下配置来处理用例,

RewriteCond %{REQUEST_URI} ^/<path-info>(.*)$
RewriteCond %{HTTP_REFERER} ^/(.*)/(.*).html(.*)$
RewriteRule (.*) /%1/404.html

但是,在测试过程中,我发现{HTTP_REFERER} 没有按我的预期工作。 我已经使用https://htaccess.madewithlove.be/ 测试了我的配置。有人可以帮我吗?

提前致谢。

【问题讨论】:

  • 我期待%{HTTP_REFERER} 将包含引用者的路径信息。我可以从中获得fr-fr。由于我们的意图是重定向,特定语言的重定向。
  • 对不起,我已经更新了用例。语言代码 REQUEST_URI 不准确。因为,它不再有效。

标签: regex apache redirect mod-rewrite


【解决方案1】:

你的规则是这样的:

RewriteCond %{REQUEST_URI} ^/test/abc/ [NC]
RewriteCond %{HTTP_REFERER} ^https?://[^/]+/([^/]+)/[^.]+\.html [NC]
RewriteRule ^ /%1/404.html [L,NC,R=302]

HTTP_REFERER 包含完整的 URL,即scheme:host/uri

我保留R=302 用于测试目的。测试后,将其更改为 R=301 以使其永久重定向。

【讨论】:

  • 谢谢阿努巴瓦。但是,我还没有看到这个工作。 ibb.co/X52ffM9
  • 查看我的编辑。只需复制/粘贴规则原样并进行测试。
  • 没有Anubhava。这也不起作用。 ibb.co/20zYZnV
  • 您是在一些在线测试仪而不是您的 Apache 上测试它吗?
  • 我确实是在在线测试仪中进行测试。但是,我在 apache 中对此进行了测试。我看到条件已经满足,但重定向是 RewriteRule 没有按预期工作。页面被重定向到https://{host}/{host}/404.html
猜你喜欢
  • 1970-01-01
  • 2011-03-29
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
  • 2010-10-23
相关资源
最近更新 更多