我有一个包含多个域的站点,例如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]
第一个条件/规则将检查我的站点是否正在从子域访问,例如 sub.mydomain.org。如果它是真的,[L] 将停止第二个重写器运行。第二个重写器使用来自位于 /subdomains/ 文件夹中的 HTACCESS 文件的相对路径,如果我从 mydomain.org/subdomains/anysub 进入我的站点,一切正常。
但是,如果站点输入为 anysub.domain.org,则相对路径不起作用。它将触发两个错误:“内部服务器错误。服务器遇到内部错误或配置错误,无法完成您的请求。” 和“此外,在尝试使用 ErrorDocument 处理请求时遇到 500 Internal Server Error 错误。”
任何人都会碰巧知道为什么?相对路径不应该总是与 HTACCESS 文件所在的位置相关吗?
编辑:刚刚发现 mydomain/subdomains/anysub/ 有效,但 mydomain/subdomains/anysub (不以 / 结尾)将再次触发显示 get var。开始认为这太复杂了,无法得到答案