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

mjr*_*mjr 9 apache .htaccess mod-rewrite https litespeed

我在我的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]
Run Code Online (Sandbox Code Playgroud)

除了这个,我想强制wwwhttps提出任何要求,不具有任何.

所以,最后所有的URL应该是这样的:https://www.example.com/whatever/something/; 对于搜索引擎优化的目的,如果一个网址错过了该标记,它应该301重定向到它的正确版本,例如:

http://example.com/about/
301 redirect to
https://www.example.com/about/
Run Code Online (Sandbox Code Playgroud)

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

Eva*_*ski 24

强制WWW:

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
Run Code Online (Sandbox Code Playgroud)

强制SSL:

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

删除"index.php":

RewriteCond %{THE_REQUEST} /index.php HTTP
RewriteRule (.*)index.php$ /$1 [R=301,L]
Run Code Online (Sandbox Code Playgroud)

  • @mjr获取涵盖`domain.com`和`www.domain.com`的证书..或更昂贵的通配符证书(将覆盖所有子域).不幸的是,必须首先建立安全通道(SSL),然后才能启动HTTPS的HTTP部分.换句话说,在连接完全建立之前,重写规则不会被执行. (5认同)