我有一个包含多个域的站点,如sub1.mydomain.org
、sub2.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]