如何将子域重定向到index.php并保持子域url在地址栏中可见?

时间:2012-07-12 04:34:41

标签: php .htaccess

我的网站包含多个域,例如sub1.mydomain.orgsub2.mydomain.org

目前我有这个htaccess代码,它将所有这些子域重定向到index.php并将子域名作为变量传递:

Options +FollowSymLinks
RewriteEngine On
RewriteRule ^(.*)$ http://mydomain.org/index.php?subdomain=$1 [QSA,L]

一切正常,但网址已更改为mydomain.org/index.php?subdomain=(sub accessed)

我想保持显示子域名。我怎么能这样做?

我的共享主机网站的结构为

/username/public_html/addon-domain/index.php
/username/public_html/addon-domain/subdomains
/username/public_html/addon-domain/subdomains/sub1
/username/public_html/addon-domain/subdomains/sub2...

上面的htaccess文件位于subdomains目录。

编辑:-----问题已解决但新的情况已经到来-------

我的HTACCESS代码的问题是我使用了绝对路径(http://www.mydomain ...),这将始终导致显示新的url,无论是否[R]。相反,你应该使用相对路径。   但是,仍然存在一个令人困惑的问题。这是新代码:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^([^.]+)\.mydomain\.org$
RewriteRule ^(.*)$ (can't use relative here) [QSA,L]
RewriteRule ^(.*)$ \.\./index.php?subdomain=$1 [QSA,L]

第一个cond /规则将检查我的网站是否从子域访问,例如sub.mydomain.org。如果为真,[L]将停止第二次重写运行。第二个rewriterule正在使用位于/ subdomains /文件夹中的HTACCESS文件的相对路径,如果我从mydomain.org/subdomains/anysub进入我的站点,那么一切正常。

如果网站输入为anysub.domain.org,则相对路径不起作用。它将触发两个错误:“内部服务器错误。服务器遇到内部错误或配置错误,无法完成您的请求。”和“另外,尝试使用ErrorDocument处理请求时遇到500内部服务器错误错误。”

任何人都会碰巧知道为什么?相对路径不应该始终与HTACCESS文件的位置相关吗?

编辑:刚想通了mydomain / subdomains / anysub / works,但是mydomain / subdomains / anysub(不以/结尾)将再次触发get var显示。开始认为这太复杂了,无法得到答案

1 个答案:

答案 0 :(得分:0)

尝试在P

的括号中添加RewriteRule标记
RewriteRule ^(.*)$ http://mydomain.org/index.php?subdomain=$1 [P,QSA,L]