2012-10-23 62 views
2

我试图做一个.htacces模拟动态子域名。 喜欢他的帖子: .htaccess: mod-rewrite; subdomain.htaccess动态子域名

但我不可能得到预期的结果。

我看了几次DOC在:apache

我有没有问题:的RewriteCond,重写规则,正则表达式。 但我有问题的子域。

我有这个页面:tododiversion.es 和我的例子,我想这一点:

chr.tododiversion.es ==> tododiversion.es/chr/

我把在的.htaccess www文件夹:www/ .htaccess

和文件夹 “CHR” 是:www/chr/

在htacces我把:

RewriteEngine On 

# host starts with something else 
RewriteCond %{HTTP_HOST} ^([^\.]+)\.tododiversion\.es$ [NC] 

# rewrite 
RewriteRule ^(.*)$ /chr [L] 

它不工作..

我知道urlrewritting工作,因为我做了一个简单的测试。 我知道RewriteCond正在工作,因为我做了一个简单的测试。 我试图在我的电脑localhost和127.0.01,它也没有工作。

如果有人能给我一些建议,它应该是伟大的! Chris

回答

0

问题可能是apache没有正确配置来处理子域名。确保您已将所有子域设置为转发到此目录,否则.htaccess将永远不会执行。

<VirtualHost *:80> 
ServerName domain.com 
ServerAlias *.domain.com 
DocumentRoot /var/www/domain.com 
</VirtualHost> 

记得在更新配置文件后重新启动Apache。

对于一个参考,请参阅How to configure subdomains for Apache2 on Ubuntu?

+1

我认为这不是强制创建子域。就像我已经添加的引用问题一样。例如:如果子域名是“用户名”.hostname。并且总是有新的用户名。我明天将研究你的链接。谢谢 – chris44

+0

我相信你需要配置Apache来正确处理子域名,但我可能是错的。我已经用配置文件示例更新了我的答案。 – mattc

+0

谢谢,我今天会试试! – chris44

0

你需要在重写规则$ 1,以便域之后的任何URL细节被传递。

chr.tododiversion.es/page.html ==> tododiversion.es/chr/page.html

根据您所提供的链接,重写规则应该如下:

# rewrite 
RewriteRule ^(.*)$ /%1/$1 [L] 
+0

感谢您的帮助。这是一个DNS问题..我应该使用DNS通配符。我知道没有特殊的DNS配置是可能的......但是我认为有人说有可能没有特殊的DNS配置有正确的配置,但他们不知道它 – chris44

+0

有更详细的信息:http://stackoverflow.com/问题/ 4194655/wildcard-in-dns-hosts-file – chris44

+0

这很有道理。很高兴你能弄明白。如果可以的话,在这里写下一个答案,说明如何解决问题,以便将问题标记为已关闭。 – mattc