Apach中.htaccess一些常用的url重写

By | 2010/01/18

     .htaccess对于Apach虚拟主机来说很有用. 很多网站功能可以通过url重写来实现, 学习一点正则表达式对理解重写规则很有好处. 看看常用的url重写规则也能加深理解. 这里收集一些常用的规则学习和备用.

把不带www的url重写到有www:

RewriteEngine On
RewriteBase /
# Redirect non-www to www
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule (.*) http://www.5dmp.com/$1 [R=301,L]

自己的一个需求, 把短目录定向到指定文件:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !^webcard.* – [C]
RewriteRule ^(\w*)/*$ /webcard/$1.html [L]

二级域名到用户目录:

RewriteEngine on
RewriteCond   %{HTTP_HOST}        ^www\.[^.]+\.host\.com$
RewriteRule   ^(.+)                        %{HTTP_HOST}$1          [C]
RewriteRule   ^www\.([^.]+)\.host\.com(.*) /home/$1$2
 

加斜杠:

RewriteEngine  on
RewriteBase    /~quux/
RewriteCond    %{REQUEST_FILENAME}  -d
RewriteRule    ^(.+[^/])$           $1/  [R]

禁止图片盗链:

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?dnzs123.com /.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.dnzs123.com/abc.gif [R,L]

伪静态,  这里有一个DEDE开启伪静态的重写设置 下面是discuz的重写规则:

RewriteEngine On
RewriteRule ^(.*)/archiver/((fid|tid)-[\w\-]+\.html)$ $1/archiver/index.php?$2
RewriteRule ^(.*)/forum-([0-9]+)-([0-9]+)\.html$ $1/forumdisplay.php?fid=$2&page=$3
RewriteRule ^(.*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/viewthread.php?tid=$2&extra=page\%3D$4&page=$3
RewriteRule ^(.*)/space-(username|uid)-(.+)\.html$ $1/space.php?$2=$3
RewriteRule ^/home/(space|network)-(.+)\.html$ /home/$1\.php\?rewrite=$2
RewriteRule ^/home/(space|network)\.html$ /home/$1\.php
RewriteRule ^/home/([0-9]+)$ /home/space\.php\?uid=$1
RewriteRule ^(.*)/tag-(.+)\.html$ $1/tag.php?name=$2

还有很多的地方可以用到url重写. 无法一一例举.

One thought on “Apach中.htaccess一些常用的url重写

  1. buger

    如何把 good/wp_xxx.php 重写成 bad/wp_xxx 这样的形式?(应用于所有WP_开头的PHP文件。)

    比如访问 good/wp_xxx.php 时 URL显示 bad/wp_xxx
    访问 bad/wp_xxx 时还是显示 bad/wp_xxx

Comments are closed.