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]
除此之外,我想对任何没有两者的请求强制使用 www
和 https
。
所以最终所有的 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.com
和www.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