Apache url规则

mod_rewrite url重写的10个规则

Mod_rewrite 是一个基于 Apache 服务器的动态 URL 重写引擎。Apache 服务器已本地集成了该模块,但默认情况下不启用。

它能够超越简单的重写功能,以下其中的一些实用技巧。

开启 Mod_Rewrite 模块
Mod_rewrite 模块通过 .htaccess 文件使用。粘贴以下代码至 .htaccess 文件头部,以开启 mod_rewrite 模块:

RewriteEngine on

谨记,.htaccess 文件命令是区分大小写的。要使用 mod_rewrite 模块,此代码必须在 .htaccess 文件的开头输入。

基本 Mod_Rewrite 布局
mod_rewrite 命令的基本格式为:

RewriteRule Pattern Substitution [Flag(s)]

URL 地址是相对的
您所要重定向的 URL 地址是相对于当前 .htaccess 所在目录而言的。因此如果 .htaccess 存放于根目录,URL 地址均涉及并相对于根目录;如果 .htaccess 存放于子目录,URL 地址涉及并相对于特定的子目录。

基本重定向
如果只是想创建简单的从一个 URL 地址到另一个 URL 地址的 301 重定向,可以使用以下代码:

RewriteRule ^fileone.html$ filetwo.html

这是一个非常基本的规则,意味着任何来自 fileone.html 的请求将被引导至 filetwo.html 文件。

省略 “www” 前缀
这段代码将允许访客不需要输入 “www” 前缀即可正确访问网站。

RewriteCond %{HTTP_HOST} !^owe-love\.com$ [NC]
RewriteRule ^(.*)$ http://owe-love.com/$1 [R=301,L]

阻止特定的 IP 地址
如果想阻止来自特定 IP 地址访问你的网站,可以使用以下代码:

RewriteCond %{REMOTE_ADDR} ^(A\.B\.C\.D)$
RewriteRule ^/* http://www.owe-love.com/sorry.html [L]

阻止特定的 User Agent
如果想阻止一组来自相同 User Agent 的 IP 地址段,可使用以下代码:

RewriteCond %{HTTP_USER_AGENT} UserAgent
RewriteRule .* - [F,L]

通过修改 User Agent 参数内容,可以轻易阻止任何 User Agent 的访问。如果要同时阻止一个以上,则代码如下:

RewriteCond %{HTTP_USER_AGENT} UserAgentA [OR]
RewriteCond %{HTTP_USER_AGENT} UserAgentB

你可以根据需要添加更多 User Agent 字段,确保每一行换行处使用 [OR] 来标示。

去除查询字符串
比方说,网站上除首页以外的其他网页 URL 地址格式如下,以查询字符串区分:

http://www.owe-love.com/home.html?example=12345abcd

这些地址格式都不是很漂亮,更重要的是,搜索引擎会显示一堆重复地址的网页。如果想摆脱 URL 地址中的查询字符串,请使用以下代码:

RewriteCond %{QUERY_STRING} example=
RewriteRule (.*) http://www.owe-love.com/$1? [R=301]

这不仅摆脱了查询字符串,而且去除了前面的问号。

预设图片
一旦无法找到图片,使用默认的预设图片替换,以防止出现丑陋的红叉,使网站显得更加专业。代码如下:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^images/.*\.jpg$ /images/default.jpg [L]

当然,也可以改变采用其他图片格式。保证你有一个实际存在的 “default.jpg” 或其他名称的预设图片。

防止盗链
被其他网站盗取内容或图片,是网站所有者最苦恼的事情。而且图片盗链浪费了大量的服务器带宽资源。下面是一段阻止盗链的简单代码:

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?owe-love.com/ .*$ [NC]
RewriteRule \.(gif|jpg|swf|flv|png)$ /feed/ [R=302,L]

请务必改变将 “owe-love.com” 更换为你自己的域名。

重定向到维护页
如果需要维修网站并使站点下线,可以将整个网站重定向至维护页面(或其他页面),代码如下:

RedirectMatch 302 ^/ /maintenancepage.html

请将 maintenancepage.html 更换为所需网页名称。

重定向多个域名至单一域名
如果你有多个域名指向你的网站,很可能会在搜索引擎中出现重复内容。使用以下代码将多个域名重定向至单一域名:

RewriteCond %{HTTP_HOST} ^www.owe-love.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^owe-love.com$ [NC,OR]
RewriteCond %{HTTP_HOST} ^www.owe-love.com$ [NC]
RewriteRule ^(.*)$ http://owe-love.com/$1 [R=301,L]

谨记文件系统的优先性
服务器上的文件系统始终优先于 URL 地址重写。比如有一个名为 “services” 的文件目录,存放一个名为 “design.html” 的文件。则无法将该 URL 重定向至 “http://www.owe-love.com/services”,因为 Apache 忽略重写代码直接转向 “services” 目录。要解决此问题,只需重命名目录即可。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值