2014-10-16 155 views
1

我有多個域指向同一臺服務器。Htaccess的問題

而不是讓它們都指向服務器的根目錄,我讓它們都指向服務器上自己的目錄。

我用這個的.htaccess代碼:

<IfModule mod_rewrite.c> 

    RewriteEngine On 

    Options +FollowSymLinks 

    RewriteCond %{HTTP_HOST} ^(www\.)?mycoolwebsite\.(com|org)$ [NC] 
    RewriteCond %{REQUEST_URI} !^/cooldir(/.*)?$ [NC] 
    RewriteRule ^(.*)$   /cooldir/$1 [QSA,L] 

    RewriteCond %{HTTP_HOST} ^(www\.)?mylolwebsite\.(com|org)$ [NC] 
    RewriteCond %{REQUEST_URI} !^/loldir(/.*)?$ [NC] 
    RewriteRule ^(.*)$   /loldir/$1 [QSA,L] 

</IfModule> 

我的服務器設置如下:

因此,對於〔實施例:

我的問題是,有時網址顯示的根目錄:

我該如何解決這個問題?

注意:我無權訪問VirtualHosts。這就是爲什麼我使用mod_rewrite。

回答

1

由於mod_dir Apache模塊在mod_rewrite規則之後在目錄之前添加了尾部斜線,因此發生了此問題。

一個解決它的方法是使用這樣的代碼(使用DirectorySlash Off在頂部和後面添加一個尾隨斜線):

<IfModule mod_rewrite.c> 

    RewriteEngine On 

    Options +FollowSymLinks 
    DirectorySlash Off 

    RewriteCond %{HTTP_HOST} ^(www\.)?mycoolwebsite\.(com|org)$ [NC] 
    RewriteRule ^((?!cooldir/).*)$ cooldir/$1 [L,NC] 

    RewriteCond %{HTTP_HOST} ^(www\.)?mylolwebsite\.(com|org)$ [NC] 
    RewriteRule ^((?!loldir/).*)$ loldir/$1 [L,NC] 

    # add trailing slash in front of directories internally 
    RewriteCond %{REQUEST_FILENAME} -d 
    RewriteRule [^/]$ %{REQUEST_URI}/ [L] 

</IfModule> 
+1

哇u爲天才!!!!!!!!!!! !!!!!!!非常感謝你!!!!!!!!!!! – user2217162 2014-10-16 17:48:28

+0

不客氣,很高興爲你解決問題。 – anubhava 2014-10-16 17:51:37