从rewritecsecond中排除子域



我在Apache上运行Zend Framework (PHP)应用程序。您可能知道,这个框架要求所有的url都路由到public/index.php(前端控制器模式)。因此,我在public_html目录下的.htaccess中添加了以下规则:

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]

在DirectAdmin中,我创建了一个名为newsletter的子域,它(默认情况下我猜)期望它的文件驻留在public_html/newsletter中。然而,当我访问newsletter.mydomain.com/somefile.html.htaccess规则重定向到http://www.newsletter.mydomain.com//public/newsletter/

如何将子域从.htaccess规则中排除?

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]

最新更新