文件:项目根目录下.htaccess
作用:http 301 https ssl
80端口 301 443 端口
不带 www 301 带 www
说明:
先要明白被动关系,哪个是被转向的域名(如:顶级域名,我们称为不带 www 的),哪个是定向的目标域名(如:二级域网,我们常称带 www 的);301重定向网站设置,是将某个域名永久性地转向另一个域名,例如有两个域名,那么301重定向就是将前者转向到后者,这里面的转向包括域名跳转以及权重转移。但是,但是这也许会对你网站的SEO优化方面带来些负面影响,对你的正常访问不会带来多大的影响,当你选择要去做301的时候,我们往下看。
友情提示:::有多个规则,请优先301重定向规则(第一个是条件,第二个是重写规则)。如果.htaccess文件内容如下:
<IfModule mod_rewrite.c> RewriteEngine on RewriteBase / RewriteCond %{HTTP_HOST} ^(uuucd\.cn)(:80)? [NC] RewriteRule ^(.*) http://www.uuucd.cn/$1 [R=301,L] RewriteCond %{SERVER_PORT} !^443$ RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] </IfModule>
解释:
---------------------------------------------------------------------------------
将不带三个 www的跳转到带三个 www的规则:顶级域名跳转二级域名
RewriteCond %{HTTP_HOST} ^(uuucd\.cn)(:80)? [NC]
RewriteRule ^(.*) http://www.uuucd.cn/$1 [R=301,L]
//%{HTTP_HOST}
如果输入的网址
//[R=301,L]
R表示Response Cose(响应代码),301表示永久重定向,L表示last(最后一条规则)
---------------------------------------------------------------------------------------------
将带 www的跳转到不带 www规则:
RewriteCond %{HTTP_HOST} ^(www.xxx.cn)(:80)? [NC]
RewriteRule ^(.*) https://xxx.cn$1 [R=301,L]
---------------------------------------------------------------------------------------------
将访问端口全跳转到https:http 301重定向到 https
RewriteCond %{SERVER_PORT} !^443$
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R=301,L]
----------------------------------------------------------------------------------
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
//%{REQUEST_FILENAME}表示请求的文件名。
RewriteCond %{REQUEST_FILENAME} !-f
//如果文件存在,就直接访问文件,不进行下面的RewriteRule。!-f表示:不是一个文件
RewriteCond %{REQUEST_FILENAME} !-d
//如果目录存在就直接访问目录不进行RewriteRule。!-d表示:不是一个目录
同理举例:
RewriteCond %{REQUEST_URI} !^.*(.css|.js|.gif|.png|.jpg|.jpeg)$ #如果是这些后缀的文件,就直接访问文件,不进行Rewrite
RewriteRule . /index.php [L]
//表示当前目录,用于 Apache 重写规则 URL 后面不带文件名(index.php 之类的)
[L] 这是最后一个匹配项,不再往下匹配
[R]相当与redirect [NC]不区分大小写。
//RewriteEngine on
将RewriteEngine引擎设置为on,就是让url重写生效-启动URL重写引擎
//RewriteBase
设置的相对路径
//RewriteCond
指令作用于定义一条规则条件。在一条RewriteRule指令前面可能会有一条或多条RewriteCond指令,只有当自身的模式(pattern)匹配成功且这些条件也满足时规则才被应用于当前URL处理。
//Rewriterule
是Rewrite中的一种规则。一种服务器的重写脉冲技术,它使得服务器可以支持 URL 重写,是一种最新流行的服务器技术。参数详解:
1) R 强制外部重定向,后面可以代301或302跳转。
2) F 禁用URL,返回403HTTP状态码。
3) G 强制URL为GONE,返回410HTTP状态码。
4) P 强制使用代理转发。
5) L 表明当前规则是最后一条规则,停止分析以后规则的重写。
6) N 重新从第一条规则开始运行重写过程。
7) C 与下一条规则关联。
8) T=MIME-type(force MIME type) 强制MIME类型。
9) NS 只用于不是内部子请求。
10) NC 不区分大小写。
11) QSA 追加请求字符串。
12) NE 不在输出转义特殊字符
如上所述有误,或建议还请留言指出!!!