在wordpress上实现ssl后,我想强制重定向到具有以下特征的站点:
non www, ssl, with trailing slash
不幸的是,它只在某些情况下有效。
例如,它不是从具有这些特征的站点(http、非www、无尾随斜杠到https、非www、有尾随斜杠)重定向,而是这样重定向:
http://example.com/foo
结束https://example.com/foo
到https://example.com/foo/
.
我还遇到了一个问题,即将不带尾部斜杠的www http站点重定向到带尾部斜杠的https非www站点。
当前,它重定向自http://www.example.com/foo
通过http://example.com/foo
到https://example.com/foo
和https://example.com/foo/
.
因此,我的问题是:我如何解决这个问题?这是由Wordpress系统完成的吗?
随信附上我的.htaccess
文件我希望你能帮助我。
RewriteEngine On
RewriteBase /
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
RewriteCond %{REQUEST_URI} !wp-content\\/cache\\/(all|wpfc-mobile-cache)
这可能是WordPress造成的吗?我之前提到过这一点,但WordPress也提供了一个重写代码。
# 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>
最合适的回答,由SO网友:MrWhite 整理而成
如果你是在.htaccess
那么我就不会在一个重定向中尝试这样做。最长的“链”应该是两个重定向(1、2甚至3个重定向对SEO没有影响):
在第一个重定向中将HTTP规范化为HTTPS,将www规范化为非www,并在第二个重定向中附加尾部斜杠(但是,如果您正在实施HSTS 然后,您需要首先实现HTTP到HTTPS重定向(在同一主机名上)。然后规范化子域。这可能会导致最多3次重定向。)
这似乎是您在第一个示例中看到的。
可以在中附加尾部斜杠.htaccess
, 但是,您尚未显示此代码,所以我假设WordPress配置为执行此操作?
当前,它重定向自http://www.example.com/foo
通过http://example.com/foo
到https://example.com/foo
和https://example.com/foo/
.
然而,这与您发布的指令无关,假设这些指令位于.htaccess
文件:
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\\. [NC]
RewriteCond %{HTTP_HOST} ^(?:www\\.)?(.+)$ [NC]
RewriteRule ^ https://%1%{REQUEST_URI} [L,NE,R=301]
这些指令仅重定向到
https://
, 所以还不清楚你的第二阶段将重定向到哪里
http://example.com/foo
是从哪里来的?除非您看到缓存的响应?
大概,您已经在整个应用程序中使用尾部斜杠链接到URL,并且之前实现了规范的www到非www重定向,因此http://www.example.com/foo
应该是比较罕见的。(?)