htaccess帮助,需要强制www,https,并删除index.php

Posted

技术标签:

【中文标题】htaccess帮助,需要强制www,https,并删除index.php【英文标题】:htaccess help, need to force www, https, and remove index.php 【发布时间】:2011-10-14 10:16:58 【问题描述】:

我在我的 htaccess 文件中进行了重写,从 url 中删除了 index.php

RewriteEngine on
RewriteCond $1 !^(images|media|system|themes|_css|_js|favicon\.ico|robots\.txt|cert\.html|index\.php) [NC]
RewriteRule ^(.*)$ /index.php/$1 [L]

除此之外,我想对任何没有两者的请求强制使用 wwwhttps

所以最终所有的 url 应该是这样的:https://www.example.com/whatever/something/;并且出于 SEO 的目的,如果一个 url 错过了标记,它应该 301 重定向到它的正确版本,例如:

http://example.com/about/
301 redirect to
https://www.example.com/about/

希望得到一些帮助,谢谢!

【问题讨论】:

【参考方案1】:

强制万维网:

RewriteCond %HTTP_HOST !^www\.example\.com [NC]
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L] # include 's' here to force ssl in addition to www

强制 SSL:

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

删除“index.php”:

RewriteCond %THE_REQUEST /index.php HTTP
RewriteRule (.*)index.php$ /$1 [R=301,L]

【讨论】:

谢谢,到目前为止,这似乎工作得很好。如果我在浏览器中点击domain.com,我会收到证书不受信任的错误,因为证书仅适用于 www。有什么办法吗? @mjr 获取涵盖domain.comwww.domain.com 的证书 .. 或更昂贵的通配符证书(将涵盖所有子域)。不幸的是,必须先建立安全通道 (SSL),然后才能启动 HTTPS 的 HTTP 部分。换句话说,在连接完全建立之前,不会执行重写规则。 @mjr 我提交了对已接受答案的修改,应该可以解决您的问题。 当键入www.example.com/example 之类的内容时,第一个代码 sn-p 不会强制 SSL。 “强制 SSL:”下的第二个代码 sn-p 似乎对我来说非常有效。

以上是关于htaccess帮助,需要强制www,https,并删除index.php的主要内容,如果未能解决你的问题,请参考以下文章

.htaccess:在所有页面上强制 www,在一个页面上强制 https,在所有其他页面上强制 http

使用 .htaccess 为 CloudFlare 用户强制使用 HTTPS 和非 WWW

htaccess 强制 https 并将 www 重定向到非 www,但没有其他子域

使用 www 强制 HTTPS 并在 CodeIgniter 中删除 index.php .htaccess

apache_conf 在htaccess中强制使用HTTPS和WWW

zf2 - 使用 .htaccess 强制 SSL/https