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

时间:2012-01-21 03:25:11

标签: php .htaccess

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

  

mydomain.com/project> project.mydomain.com

但是,如果使用子域访问相同的指令,那么我也想要一些规则应用于它。

这是我的当前.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文件重定向不是一种选择。

1 个答案:

答案 0 :(得分:0)

罗宾,您似乎正在尝试将路径mydomain.com/projects重定向到projects.mydomain.com。所以,我认为这不会合并.htaccess。根据您的需要,几乎所有从/projects/your-anotherproject到必须重定向到projects.mydomain.com/your-anotherproject的内容。为每个项目重写htaccess是一个不错的想法。

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

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

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