首先要檢查服務器apache是否開啟mod_rewrite
運行phpinfo(),查看apache2handler里的Loaded Modules是否有mod_rewrite ,Linux服務器是默認開啟的
如果沒有開啟的話,在apache的配置文件httpd.conf里找到#LoadModule rewrite_module modules/mod_rewrite.so 把#去掉
然后開始檢測apache是否支持 ".htaccess"
在httpd.conf里
1 <Directory> 2 3 Options Indexes FollowSymLinks 4 5 AllowOverride none 6 7 </Directory>
把none改成All
先讓解析一個域名
我讓download.xxx.cn 指向我主目錄下的download目錄
然后創建一個.htaccess的文件
內容如下:
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