当前位置 主页 > 服务器问题 > Linux/apache问题 >

    13个实用的Apache Rewrite重写规则

    栏目:Linux/apache问题 时间:2019-10-08 07:32

    1.去掉域名中的www标记
    复制代码 代码如下:RewriteCond %{HTTP_HOST} !^jb51\.net$ [NC]
    RewriteRule .? http://jb51.net%{REQUEST_URI} [R=301,L]
    2.去掉www标记,但是保存子域名
    复制代码 代码如下:RewriteCond %{HTTP_HOST} ^www\.(([a-z0-9_]+\.)?jb51\.net)$ [NC]
    RewriteRule .? http://%1%{REQUEST_URI} [R=301,L]
    这里,当匹配到1%变量以后,子域名才会在%2(内部原子)中抓取到,而我们需要的正是这个%1变量。
    3.给子域名加www标记
    复制代码 代码如下:RewriteCond %{HTTP_HOST} ^([a-z.]+)?jb51\.net$ [NC]
    RewriteCond %{HTTP_HOST} !^www\. [NC]
    RewriteRule .? http://www.%1jb51.net%{REQUEST_URI} [R=301,L]
    这个规则抓取二级域名的%1变量,如果不是以www开始,那么就加www,以前的域名以及{REQUEST_URI}会跟在其后。
    4.防止图片盗链
    一些站长不择手段的将你的图片盗链在他们网站上,耗费你的带宽。你可以加一下代码阻止这种行为。
    复制代码 代码如下:RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51\.net/ [NC]
    RewriteRule \.(gif|jpg|png)$ – [F]
    如果{HTTP_REFERER}值不为空,或者不是来自你自己的域名,这个规则用[F]FLAG阻止以gif|jpg|png 结尾的URL
    如果对这种盗链你是坚决鄙视的,你还可以改变图片,让访问盗链网站的用户知道该网站正在盗用你的图片。
    复制代码 代码如下:RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?jb51\.net/.*$ [NC]
    RewriteRule \.(gif|jpg|png)$ 你的图片地址 [R=301,L]
    除了阻止图片盗链链接,以上规则将其盗链的图片全部替换成了你设置的图片。
    你还可以阻止特定域名盗链你的图片:
    复制代码 代码如下:RewriteCond %{HTTP_REFERER} !^http://(www\.)?leech_site\.net/ [NC]
    RewriteRule \.(gif|jpg|png)$ – [F,L]
    这个规则将阻止域名黑名单上所有的图片链接请求。
    当然以上这些规则都是以{HTTP_REFERER}获取域名为基础的,如果你想改用成IP地址,用{REMOTE_ADDR}就可以了。
    5.如果文件不存在重定向到404页面
    如果你的主机没有提供404页面重定向服务,那么我们自己创建。
    复制代码 代码如下:RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule .? /404.php [L]
    这里-f匹配的是存在的文件名,-d匹配的存在的路径名。这段代码在进行404重定向之前,会判断你的文件名以及路径名是否存在。你还可以在404页面上加一个?url=$1参数:
    复制代码 代码如下:RewriteRule ^/?(.*)$ /404.php?url=$1 [L]
    这样,你的404页面就可以做一些其他的事情,例如默认信心,发一个邮件提醒,加一个搜索,等等。
    6.重命名目录
    如果你想在网站上重命名目录,试试这个:
    复制代码 代码如下:RewriteRule ^/?old_directory/([a-z/.]+)$ new_directory/$1 [R=301,L]
    在规则里我添加了一个“.”(注意不是代表得所有字符,前面有转义符)来匹配文件的后缀名。
    7.将.html后缀名转换成.php
    前提是.html文件能继续访问的情况下,更新你的网站链接。
    复制代码 代码如下:RewriteRule ^/?([a-z/]+)\.html$ $1.php [L]
    这不是一个网页重定向,所以访问者是不可见的。让他作为一个永久重定向(可见的),将FLAG修改[R=301,L]。
    8.创建无文件后缀名链接
    如果你想使你的PHP网站的链接更加简洁易记-或者隐藏文件的后缀名,试试这个: