【发布时间】: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,我们并没有明确说明。