2

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

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

我已经阅读了几次文档:apache

我对 RewriteCond、RewriteRule、正则表达式没有任何问题。但是我的子域有问题。

我有这个页面: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 在我的计算机上,但它也没有工作。

如果有人能给我一些建议,那就太好了!克里斯

4

2 回答 2

0

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

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

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

如需参考,请参阅如何在 Ubuntu 上为 Apache2 配置子域?

于 2012-10-23T21:56:51.140 回答
0

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

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

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

# rewrite
RewriteRule ^(.*)$ /%1/$1  [L]
于 2012-10-24T21:09:00.993 回答