htaccess重定向到https仅在文件存在时才有效

时间:2015-11-13 15:18:12

标签: apache .htaccess redirect https

我有一个安装了SEO Redirection Plugin的wordpress网站。这是因为我改变了网站,我不得不重新编辑一些旧页面。

一切都很好。然后我也安装了SSL,我已经更改了htaccess,以便从http重新编号为https。这是文件(正如您所看到的,我测试了不同的解决方案):

# RewriteEngine On
# RewriteBase /
# redirect 301 /implantologia.html https://www.mysite.it/implantologia/

# BEGIN GD-SSL
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{HTTPS} !=on
# RewriteCond %{SERVER_PORT} !^443$
# RewriteCond %{HTTP_USER_AGENT} ^(.+)$
# RewriteRule ^$ https://www.mysite.it/$1 [R=301,L]
RewriteCond %{SERVER_NAME} ^mysite\.it$ [NC]
RewriteRule .* https://%{SERVER_NAME}%{REQUEST_URI} [R=301]
Header add Strict-Transport-Security "max-age=300"
</IfModule>
# END GD-SSL

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

现在正在发生这种情况:

  • 如果我使用http检查现有文件,一切正常并且用户被重定向到https;

  • 如果我使用HTTPS检查不存在的文件,那么我的SEO重定向插件会重新发送请求,一切正常;

  • 如果我检查一个不存在的文件(例如使用HTTP的mysite.it的旧外部链接),浏览器中的url保持不变,我收到404错误。但是,如果我重新发送请求,它就会起作用,我会转到正确的页面。

最后,如果您点击旧的http链接,则会收到404错误。但是,在开始浏览网站后,您将永远不会再遇到此问题。我有一个404错误的日志,它充满了我无法看到的错误...直到我开始匿名浏览。

那么,这个问题是什么?有缓存吗?为什么它只在第一次访问时不起作用?如果请求的文件不存在,为什么htaccess不会重定向到https?

提前感谢您的帮助。

0 个答案:

没有答案