2013-10-24 155 views
1

我想使用.htaccess將子目錄重定向到子域。我目前的代碼:將子目錄重定向到.htaccess中的子域

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
RewriteCond %{HTTP_HOST} ^(www.)?sub.example.com$ 
RewriteRule ^(/)?$ subdirectory [L] 
</IfModule> 

此代碼重定向到sub.example.com/subdirectory。如何從新網址中刪除/subdirectory

回答

1

將這一規則放在上面,所有其他規則之前:

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] 
RewriteRule ^subdirectory/(.*)$ http://www.sub.example.com/$1 [L,NC,R=301] 

完整的.htaccess:

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www\.)?example\.com$ [NC] 
RewriteRule ^subdirectory/(.*)$ http://sub.example.com/$1 [L,NC,R=301] 

RewriteCond %{HTTP_HOST} ^(www\.)?sub\.example\.com$ [NC] 
RewriteCond %{REQUEST_URI} !(jpe?g|gif|bmp|png|tiff|css|js)$ [NC] 
RewriteRule !subdirectory subdirectory%{REQUEST_URI} [NC,L] 

RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 
+0

謝謝您的回答!現在我可以訪問sub.example.com了,但是出現了兩個問題:Wordpress被搞砸了,下面是它的截圖:http://s8.postimg.org/5rupjqwdv/image.png - 沒有模板結構,樣式等。第二個問題是,現在example.com/subdirectory導致www.sub.example.com - 而www是一個缺少的URL。也許如果我們將www重定向到非www,它會解決這個問題? –

+0

對於style,JS等解決方案很簡單,只需在你的css,js,images文件中使用絕對路徑而不是相對路徑。這意味着你必須確保這些文件的路徑以'http://'或斜槓'/'開始。 – anubhava

+0

也可能知道'www.sub.example.com'也由WordPress管理或不? – anubhava