当前位置:-go»- 网站首页 / 軟件应用區 / 正文

ubuntu中利用apache做301重定向.htaccess文件的方法

12个月前 (05-31) / 64 次围观 / 0 次吐槽

文件:项目根目录下.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 不在输出转义特殊字符


如上所述有误,或建议还请留言指出!!!


更新: 2023-06-02

相關 操作系統

本筆記站部分文章、圖片收集於 互聯網,作者:僅作自學筆記;請勿轉載用於 非法途逕 , 轉載注明 _ 我欣飞祥
Url : 【 http://uuucd.cn/software/1808.html
额~ 本文暂时没人评论 来添加一个吧 …

发表评论

必填

选填

选填

必填

◎请提交您的留言_感谢您的参与讨论!!

ipcooc2@gmail.com