2014-01-20 91 views
0

我試圖做這件事: 我想重定向特定域的所有流量A到根的子文件夾。我會用他們的子文件夾對多個域做同樣的事情。htaccess - 多域到子文件夾

例子:

www.domaina.it -> /public_html/domainadir/ 
www.unioncucine.it -> /public_html/unioncucine/ 

對於我已經使用這個代碼,似乎工作做到了:

DirectoryIndex index.php index.html 
DirectorySlash Off 
RewriteEngine On 

RewriteCond %{REQUEST_URI} !^/unioncucine/ 
RewriteCond %{HTTP_HOST} ^(www\.)?unioncucine\. 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /unioncucine/$1 
RewriteCond %{HTTP_HOST} ^(www.)?unioncucine.it$ 
RewriteRule ^(/)?$ /unioncucine/index.html [L] 

它似乎工作,但不是在這種情況下:

我想訪問www.unioncucine.it/web,我已經加載了一個測試joomla頁面(它沒有模板,因爲我正在處理它)。

如果你到這裏:www.unioncucine.it/web我被重定向到www.unioncucine.it/unioncucine/web/,它不會加載正確的內容。

去這裏:www.unioncucine.it/web/它工作正常。 (該頁面只是一些詞和一個css scretch)。

#Changing 
RewriteRule ^(.*)$ /unioncucine/$1 
#To 
RewriteRule ^(.*)$ /unioncucine/$1/ 

它似乎沒有重定向的工作,但其他文件夾內的所有文件都不可用。

謝謝

編輯:

改變你告訴:

RewriteCond %{REQUEST_URI} !^/web/templates/protostar/ [NC] 
RewriteRule ((?:css|js|images)/.+)$ /web/templates/protostar/$1 [L,NC,R=301] 
RewriteCond %{REQUEST_URI} !^/unioncucine/ 
RewriteCond %{HTTP_HOST} ^(www\.)?unioncucine\. 
RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /unioncucine/$1/ 
RewriteCond %{HTTP_HOST} ^(www.)?unioncucine.it$ 
RewriteRule ^(/)?$ /unioncucine/index.html [L] 

但它仍然不起作用:http://www.unioncucine.it/css/template.css

回答

0

你被重定向從www.domain.it/domainadir/testwww.domain.it/domainadir/test/由於mod_dir在目錄後添加了一個尾部斜線。

之前其他現有的代碼在你的.htaccess 的頂部添加這兩條線:

DirectoryIndex index.html 

DirectorySlash Off 

雖然你應該添加規則,在規則的添加斜線,以及:

RewriteEngine On 

# fix css/js/images 
RewriteCond %{REQUEST_URI} !^/web/templates/protostar/ [NC] 
RewriteRule ((?:css|js|images)/.+)$ /web/templates/protostar/$1 [L,NC,R=301] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !^/domainadir/ 
RewriteCond %{HTTP_HOST} ^(www\.)?domaina\. 
RewriteRule ^(.*)$ /domainadir/$1/ [L] 

對於CSS/JS /圖像更好地使用絕對路徑在您的CSS,JS,圖像文件,而不是相對的。這意味着您必須確保這些文件的路徑始於http://或斜槓/

您可以嘗試在你的頁面的頭部添加此:

<base href="/" /> 
+0

我試過,但沒有任何改變。 – atti

+0

在新瀏覽器中嘗試'www.domaina.it/test'。 – anubhava

+0

好吧,似乎有效,但深入我有這個問題:使用RewriteRule ^(。*)$/domainadir/$ 1/[L],根已加載,但所有其他文件(如css文件)由於404錯誤。如果我把RewriteRule ^(。*)$/domainadir/$ 1 [L](刪除最後一個'/'並添加RewriteCond%{REQUEST_FILENAME}!-f)文件被加載,但我有以前的問題,我重定向。我找不到解決這兩個問題的解決方案。 – atti