2009-12-23 21 views
0

如果我错过了某人,请事先致歉,我想看看是否有人有我自己的.htaccess的困境:帮助使用.htaccess文件的重写规则

目前,我有以下网站:www.example.com

我想将其设置如下所示:somewebsite.example。 com

并让子域名“somewebsite”指向我的根目录上的子文件夹。如果该子域不可用,请将它们返回到根文件夹中的error.html

例子:

/ 
error.html 
/img 
/websites 
    /somewebsite 
     index.html 

这里是我与我的工作的根文件夹的.htaccess:

RewriteEngine on 
Options +FollowSymlinks 
RewriteBase/

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^somewebsite\.example\.com$ [NC] 
RewriteCond %{REQUEST_URI} !somewebsite/ !-d 
RewriteRule ^/(.*)$ http://somewebsite.example.com/$1 [L,R=301] 

我不惊人的正则表达式用或.htaccess文件,但什么时我错过了完成我的目标?

+0

我不清楚你的意思是“指向”。也许你可以用mod_rewrite描述你想要的动作。你想*重写* http://someweb.domain.com/foo到别的东西吗?你想要一些请求(哪些?)被重定向到someweb.domain.com?等等。 – Cheeso

回答

0

试试这个规则:

RewriteCond %{HTTP_HOST} ^([^./]+)\.example\.com$ 
RewriteCond %{DOCUMENT_ROOT}/%1 -d 
RewriteRule^%{DOCUMENT_ROOT}/%1%{REQUEST_URI} [L] 

这条规则测试,如果foobar.example.com与任意foobar的可以映射到位于文档根目录中的现有目录。

+0

感谢Gumbo的帮助;让我澄清的场景: 我想要一个访问者来到一个页面http://chris.domain.com 其中“克里斯”是一个“网站”文件夹的子文件夹驻留在服务器根(根 - >网站 - >克里斯)。 所以我打算在服务器根目录下有一个.htaccess文件来重定向它。 在chris文件夹中,我想要一个.htaccess文件,我可以告诉它是http://www.chris.com或http://chris.com(当我在php中写入它时) 希望这有助于澄清情况。谢谢! – Chris

+0

@Chris:然后只需改变路径:'%{DOCUMENT_ROOT}/websites /%1 ...' – Gumbo