首先要檢查服務器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