apache - .htaccess - 强制使用单域和 SSL

标签 apache .htaccess ssl mod-rewrite

我有一个用于 www.example.com 的 SSL,以及一堆别名域(例如 mydomain.co.uk、otherdomain.com 等)停放在 cPanel 帐户上。

我想做的是强制使用 https://www.example.com对于所有请求。域之后的任何内容都应按原样附加(稍后在 .htaccess 中也会为 SEO 友好的 URL 重写)。

例如:-

http://example.com/page/2/
https://example.com/page/2/
http://www.otherdomain.com/page/2/
http://mydomain.co.uk/page/2/

都应该变成

https://www.example.com/page/2/

这几乎可以工作:-

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

RewriteCond %{SERVER_PORT} ^80$
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

但是能一下子搞定吗?此外,上面再次将查询字符串附加到 URL,例如:-

http://www.example.com/page/2/

结束为:-

https://www.example.com/page.php/2/?2/

搜索引擎友好的 SEO 部分是:-

Options +SymlinksIfOwnerMatch +MultiViews
RewriteRule ^(.*).php/(.*) $1.php?$2

应该保持不变。

IIRC,在我强制使用 SSL 之前,仅 www.example.com 的强制工作正常:-

RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http%2://www.example.com/$1 [R=301,L]

非常感谢任何帮助!

最佳答案

要在单个重定向中强制使用 www 和 https,您可以使用以下规则:

RewriteEngine on
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^ https://www.example.com%{REQUEST_URI} [L,NE,R]

关于apache - .htaccess - 强制使用单域和 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41984285/

相关文章:

php - 部分页面上传到服务器后无法运行

apache - 如何注释掉 .htaccess 文件的整个部分?

linux - Bash 命令未在 Apache CGI Shell 中运行

php - Mamp - 让 Gzip 工作

r - 如何使用 R 连接到远程 PostgreSQL,需要证书验证

powershell - 使用 Powershell 更改 SERVER 的 Home FTP SSL 证书

php - 用 PHP 编写的 SSI 解析器?

php - 为什么 DirectoryIndex index.php index.html 不工作?

.htaccess - 没有遵循重定向

ios - 尝试使用 swift 从自签名服务器获取数据,用于 iOS 应用程序开发