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


How to redirect subdomains to index.php and keep subdomain url visible in address bar?

我有一个包含多个域的站点,如sub1.mydomain.orgsub2.mydomain.org

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

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

除了URL地址更改为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。如果为true,[L]将停止运行第二个重写程序。第二个重写程序是使用位于/subdomains/文件夹上的HTACCESS文件的相对路径,如果我从mydomain.org/subdomain/anysub.进入我的网站,一切都很好

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

有人会碰巧知道为什么?相对路径不应该总是与HTACCESS文件所在的位置相关吗?

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

尝试将P标志添加到RewriteRule:的括号中

RewriteRule ^(.*)$ http://mydomain.org/index.php?subdomain=$1 [P,QSA,L]