.htaccess,用于重定向到子域或应用某些规则


.htaccess for either redirecting to subdomain or applying certain rules

我正在子域上托管一个zend框架项目。比方说,project.mydomain.com。然而,该域也可以从mydomain.com/project访问。现在,为了避免必须维护两种不同情况的复杂性,我试图通过将直接访问的路径重定向到子域(即)来最小化复杂性

mydomain.com/project>project.mydomain.com

但是,如果使用子域访问相同的目录,那么我希望一些规则也适用于它。

这是我的currect.htaccess,它允许我使用直接路径,即mydomain.com/project/

RewriteEngine On
# Exclude some directories from URI rewriting
#RewriteRule ^(dir1|dir2|dir3) - [L]
RewriteRule ^'.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /projects/myproject.com/public/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /projects/myproject.com/public/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^public/.*$ /projects/myproject.com/public/index.php [NC,L]

接下来,我将只为子域编写.htaccess。但是,我希望直接访问的路径重定向到子域。如何通过.htaccess进行重定向?

请注意,通过php文件重定向不是一个选项。

Robin,看起来您正在尝试将路径mydomain.com/projects重定向到projects.mydomain.com。所以,我不认为这会被合并。htaccess。正如你所需要的,从/projects/your-anotherproject到的几乎所有内容都必须重定向到projects.mydomain.com/your-anotherproject。为每个项目重写htaccess是个坏主意。

如果是这种情况,那么我建议在projects/根上使用简单的.htaccess,而不是

RewriteEngine On
RedirectMatch 301 ^/projects/(.*)$ http://projects.mydomain.com/$1

这将解决该子域上所有子目录的所有情况。现在,在项目的根目录中编写项目特定的.htaccess,就像您在上所做的那样