2013-05-29 57 views
1

我在Apache上運行Zend Framework(PHP)應用程序。如您所知,此框架要求將所有URL路由到public/index.php(前端控制器模式)。因此,我已經添加了以下規則的.htaccesspublic_html目錄:從RewriteCond中排除子域

RewriteEngine On 

RewriteRule ^\.htaccess$ - [F] 

RewriteCond %{REQUEST_URI} ="" 
RewriteRule ^.*$ /public/index.php [NC,L] 

RewriteCond %{REQUEST_URI} !^/public/.*$ 
RewriteRule ^(.*)$ /public/$1 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^public/.*$ /public/index.php [NC,L] 

# rewrite non-www url's 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

在管理嚮導,我創建了一個名爲newsletter子域,它(默認情況下我猜)預計其文件駐留在public_html/newsletter 。但是,當我訪問newsletter.mydomain.com/somefile.html.htaccess規則將其重定向到http://www.newsletter.mydomain.com//public/newsletter/

如何從.htaccess規則中排除我的子域?

+0

沒有改變任何東西... –

回答

3
RewriteEngine On 

# don't apply any rewrites to the domain newsletter.mydomain.com 
RewriteCond %{HTTP_HOST} ^newsletter\.mydomain\.com$ 
RewriteRule .* - [L] 

# rewrite non-www url's 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 

#shouldn't be needed! 
RewriteRule ^\.htaccess$ - [F] 

RewriteCond %{REQUEST_URI} ="" 
RewriteRule ^.*$ /public/index.php [NC,L] 

RewriteCond %{REQUEST_URI} !^/public/.*$ 
RewriteRule ^(.*)$ /public/$1 

RewriteCond %{REQUEST_FILENAME} -f 
RewriteRule ^.*$ - [NC,L] 

RewriteRule ^public/.*$ /public/index.php [NC,L]