我的问题是我有一个正常运行的子域(sub.mydomain.com)。 sub 已加载到 mydomain.com/sub 中。
我想做的是将所有对 sub.mydomain.com 的请求重定向到 mydomain.com 。
不知怎的,当我是子域时,我似乎无法访问根文件夹(主域)。我可以让它从 mydomain.com/sub 到 mydomain.com 工作。但不是来自子域。
目前我正在使用:
RewriteEngine on
RewriteRule ^(.*)/?$ /home/web/webuser/$1 [L]
我必须承认我没有完全理解你的问题。您想将所有内容从 sub.mydomain.com/whatever 重定向到 mydomain.com/whatever 吗?在这种情况下,以下内容(放入 sub.mydomain.com 的配置文件中)可能有效:
RewriteEngine On
RewriteRule ^/(.*)$ http://mydomain.com/$1 [R,L]
它重定向到客户端,这意味着用户将在浏览器中看到 mydomain.com/sub。
编辑:我想我现在明白你的问题了。是的,这是一个权限问题:如果您网站的 DocumentRoot 是 /whatever/sub,那么您不能通过在 URL 中添加“/..”来访问 /whatever。我希望你明白这是一件好事。 :-) mod_rewrite 只是更改 URL,因此它也不能这样做。
因此,要解决您的问题,您需要更改 sub.mydomain.com 的 DocumentRoot 或创建一个允许您访问所需目录的符号链接(例如 /whatever/sub/redir-target -> /whatever)。不过,要小心符号链接选项,因为它会在文件系统上创建无限长度的有效目录(/whatever/sub/redir-target/sub/redir-target/...),并且某些脚本无法应对这一点。
EDIT2:您可能想创建一个别名,而不是符号链接,例如,如下所示:
Alias /redir-target /home/web/webuser
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/redir-target/.*$
RewriteRule ^/(.*)$ /redir-target/$1
不过,我认为最简单的解决方案是更改 DocumentRoot...
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)