【发布时间】:2010-07-09 03:08:02
【问题描述】:
我正在尝试在我的虚拟主机(mediatemple)上将一个子文件夹从一个域指向另一个域。我想使用内部重写,而不是 301 重定向。这是目标
http://www.clientdomain.com/blog/$1 --> http://www.mydomain.com/wpmu/clientdomain/$1
在服务器端,结构如下:
/x/y/z/domains/clientdomain.com/html/blog/ -- htaccess file is here
/x/y/z/domains/mydomain.com/html/wpmu/ -- wpmu installation
到目前为止,我只在 301 重定向方面取得了成功,但我的目标是掩盖一些事情,以便 wpmu 可以在不透露其位置的情况下为客户的博客提供动力。这是我的工作 301 重定向:
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/blog/
RewriteRule ^(.*)$ http://www.mydomain.com/wpmu/clientdomain/$1 [NC]
有没有一种简单的方法可以将其转换为内部重写?除了 301 重定向之外,我什么都没看到……
提前致谢,
凯西
【问题讨论】:
-
您是否尝试过使用绝对文件系统路径而不是 URI?
-
我还没有成功;指定的文件系统路径是否与 htaccess 中的 URI 不同?当我在 RewriteCond 中使用 %{PATH_INFO} 时,匹配失败。
-
文件系统路径不起作用,因为 mod_rewrite 不会低于 ${DOCUMENTROOT}
-
.htaccess中指定的规则似乎就是这种情况,因为mod_rewrite将请求发送到 Apache 内部重定向处理程序,该处理程序显然将其解析为 URL(我无法准确定位有时候是这样的)。虽然在服务器上下文中 (httpd.conf),但源代码建议绝对(可访问)文件路径也应该工作。 (对于好奇的人来说,这纯粹是补充信息;对于您的具体问题,我认为您的解决方案是通过.htaccess单独工作的唯一方法,除非现有别名指令)
标签: apache .htaccess mod-rewrite