首先要检查服务器apache是否开启mod_rewrite php
运行phpinfo(),查看apache2handler里的Loaded Modules是否有mod_rewrite ,Linux服务器是默认开启的apache
若是没有开启的话,在apache的配置文件httpd.conf里找到#LoadModule rewrite_module modules/mod_rewrite.so 把#去掉服务器
而后开始检测apache是否支持 ".htaccess" ide
在httpd.conf里spa
1 <Directory> 2 3 Options Indexes FollowSymLinks 4 5 AllowOverride none 6 7 </Directory>
把none改为Allrest
先让解析一个域名code
我让download.xxx.cn 指向我主目录下的download目录blog
而后建立一个.htaccess的文件string
内容以下:域名
1 <IfModule mod_rewrite.c> 2 RewriteEngine On 3 RewriteBase / 4 # download.starryheaven.cn 到子目录music 5 RewriteCond %{HTTP_HOST} ^download\.starryheaven\.cn$ [NC] 6 RewriteCond %{REQUEST_URI} !^/download/ 7 RewriteRule ^(.*)$ download/$1?Rewrite [L,QSA] 8 #能够绑定多个 只需重复上三行代码并更改一下域名、目录名 就行了 9 </IfModule>
不过这样还能够经过 主域名/download 访问,要想禁止这种的话就须要添加/download下在加一个.htaccess文件,内容以下:
1 <IfModule mod_rewrite.c> 2 RewriteEngine On 3 RewriteBase / 4 #只许绑定的域名访问 5 RewriteCond %{HTTP_HOST} !^download\.starryheaven\.cn$ [NC] 6 RewriteRule (.*) http://download.starryheaven.cn/$1 [L,R=301] 7 #对绑定目录下与 同名的目录的处理 8 RewriteCond %{REQUEST_URI} ^\/download\/ [NC] 9 RewriteCond %{QUERY_STRING} !^(.*)?Rewrite 10 RewriteRule ^(.*)$ /%{REQUEST_URI}/%{REQUEST_URI}/$1?Rewrite [L,QSA] 11 </IfModule>
最后重启下apache就好了:
service httpd restart