通配符域和站点根目录中的页面链接

时间:2011-08-23 01:15:51

标签: .htaccess mod-rewrite wildcard-subdomain

我有一个通配符子域(ServerAlias * .mydomain.com)来捕获所有子域请求并将它们重定向到主页,同时在浏览器中保留“假”URL并将子域(城市名称)作为URL参数传递

子域文件夹中的

.htaccess:

<IfModule mod_rewrite.c>
 Options +FollowSymLinks
 RewriteEngine On
 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteRule ^(.*)$ http://%2.%3/index.php?city=%1 [P,L]
</IfModule>

问题:每个页面都有一个菜单,其中包含一些链接(register.php,login.php,contact.php),如果您在一个子域中选择其中任何一个,请求(city.mydomain.com)例如/login.php)由条件/规则

捕获

我想我需要添加第二组条件/规则,但经过一些测试后找不到合适的条件。我在已经工作的那个之前添加了这个:

 RewriteCond %{HTTP_HOST} ^(.*)\.(.*)\.(.*)$ [NC]
 RewriteCond %{REQUEST_URI} ^/(.*)\.php$ [NC]
 RewriteRule ^(.*)$ http://%2.%3/%4 [P,L]

收到错误:

坏网关! 代理服务器从上游服务器收到无效响应。 代理服务器无法处理请求GET /register.php。

原因:DNS查找失败:

如果您认为这是服务器错误,请与网站管理员联系。

错误502 city.domaim.com

CentOS 5 Parallels Small Business Panel 10.2.0

提前致谢

2 个答案:

答案 0 :(得分:0)

使用mod_rewrite可能会使这种情况复杂化。我建议简单地解析/验证子域(city)并使用直接PHP设置常量。例如,在config / init文件中。最后,您将对子域进行更大的控制,尤其是在验证的情况下。

KISS :)

答案 1 :(得分:0)