我有一个网站与多个域名,如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将停止运行第二个重写器。第二个重写规则使用了HTACCESS文件的相对路径,HTACCESS文件位于/subdomain/文件夹中,如果我从mydomain.org/subdomain/anysub进入我的站点,所有这些都可以正常工作。
但是,如果以anysub.domain.org输入站点,则相对路径不起作用。它将触发两个错误:“内部服务器错误。服务器遇到内部错误或配置错误,无法完成您的请求。”和“此外,在尝试使用ErrorDocument处理请求时,遇到了500内部服务器错误。”
有人会碰巧知道为什么吗?相对路径不应该总是与HTACCESS文件的位置相关吗?
编辑:我刚刚知道mydomain/subdomain/anysub/可以工作,但是mydomain/subdomain/anysub(不以/结尾)将再次触发显示的get var。我开始觉得这太复杂了,永远得不到答案
发布于 2012-07-12 13:06:12
尝试将P标志添加到RewriteRule的括号中
RewriteRule ^(.*)$ http://mydomain.org/index.php?subdomain=$1 [P,QSA,L]https://stackoverflow.com/questions/11445061
复制相似问题