2013-04-08 80 views
1

我已經設置了我的GoDaddy Shared Hosting帳戶,不應該直接從服務器根目錄運行腳本 - 腳本至少啓動一個subdir。我也有子域也屬於這個類別,因爲它似乎我的服務器只是將子域重寫到選定的文件夾。htaccess重寫到有例外的子目錄

 
/root 
    wordpress 
    drupal 
    app1 
    subdomains 
    sub1 
    sub2 
    sub3 

我決定,我想www.mydomain.com推出WordPress的 - 等SO和測試一些解決方案相當多的研究之後 - 這是工作的htaccess的。其他解決方案導致500服務器內部錯誤,我認爲是我的託管計劃的限制。

<IfModule mod_rewrite.c> 
    RewriteEngine on 
    RewriteCond %{HTTP_HOST} ^www.mydomain.com$ [NC,OR] 
    RewriteCond %{REQUEST_URI} !wordpress/ 
    RewriteRule ^(.*)$ wordpress/$1 [L] 
</IfModule> 

但現在子網域不再工作,並從服務器錯誤消息The requested URL /wordpress/subdomains/sub1/ was not found on this server.很明顯,我的重寫規則的子域踢英寸

我試着在RewriteRule中加入RewriteCond %{REQUEST_URI} !subdomains但沒有幫助。 也RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d -all重寫停止工作。

如何修改規則以避免特定目錄/模式重定向?或者,如果目錄存在,它不應該重寫?

回答

1

嘗試添加該之前您對WordPress的規則:

RewriteRule ^subdomains - [L] 

應該只是讓通過與/subdomains通開始沒有做任何重寫請求。

1

這個替換您的重寫規則:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com$ [NC] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ wordpress/$1 [L] 

這將確保wordpress/重定向不對任何文件或目錄進行。