【问题标题】:.htaccess wrong redirection.htaccess 错误的重定向
【发布时间】:2020-02-15 14:51:43
【问题描述】:

我在我的 .htaccess 中强制 http 到 https 重定向,它工作得很好。但是我添加了 RewriteCond %{REQUEST_URI} !^/robots.txt$ 规则,而不是将 http://example.com/robots.txt 重定向到任何地方,而只是提供 robots.txt 文件。

问题是,它不起作用,http://example.com/robots.txt 以某种方式重定向到 http://example.com/index.php url。

我的 .htaccess 如下:

RewriteEngine On

# HTTPS redirect
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{REQUEST_URI} !^/robots.txt$
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [L]
RewriteRule ^(.+)$  /index.php [L,QSA]

有什么建议吗?谢谢。

【问题讨论】:

  • 你为什么做任何例外?通过 HTTPS 提供 robots.txt 有什么问题?
  • @NicoHaase 当您将原始 robots.txt 保留在 http 协议下时,具有此旧 robots.txt 的 url 的机器人将更快地意识到没有 https 的链接现在被重定向到 https。这是一种很好的做法,我想。但是,不能说它在现实中有多重要。
  • “这是一种很好的做法”听起来很奇怪。你有任何来源吗?重定向一切,一切到 HTTPS 也应该“快”
  • @NicoHaase 据我了解(不是 SEO 专家),如果我们保留旧的 HTTP robots.txt 和旧的 HTTP 链接,我们会明确告诉搜索引擎旧链接使用 301 重定向(所有旧 robots.txt 的链接被重定向)。如果我们只提供带有新 HTTPS 链接的新 HTTPS robots.txt,我们并没有明确说明。

标签: php apache .htaccess


【解决方案1】:

它重定向是因为最后一条规则将REQUEST_URI 更改为/index.php。您应该在第一条规则中使用 THE_REQUEST 变量,因为在应用规则后它不会被覆盖。

RewriteEngine On

# HTTPS redirect
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteCond %{THE_REQUEST} !/robots\.txt [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

还要确保在新浏览器中测试此更改或在完全清除浏览器缓存后进行测试。

【讨论】:

  • 泰!我将 RewriteCond %{REQUEST_URI} !^/robots.txt$ 行更改为 RewriteCond %{THE_REQUEST} !/robots\.txt [NC] 但非 HTTPS example.com/robots.txt 现在重定向到 HTTPS 版本 - example.com/robots.txt。由于出现错误,我没有更改 htaccess 的最后几行。
  • 所以现在的问题是,robots.txt 的 http 请求仍然被重定向到 https。
  • 在 Chrome 开发工具中使用 缓存禁用 进行测试,然后在“网络”选项卡中检查您获得的 301/302 重定向 URL 是什么。
  • 我试过了。当我请求非 https robots.txt 时,我得到“发起者:其他”和状态代码:301 永久移动(来自磁盘缓存)。重定向到 https 版本的 robots.txt 网址。
  • 这意味着您没有在开发工具中禁用缓存。有一个复选框可以禁用缓存
猜你喜欢
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 2012-03-04
  • 1970-01-01
  • 2017-12-12
  • 2017-07-14
  • 1970-01-01
相关资源
最近更新 更多