我在子域中有一个 htaccess,其规则如下:
RewriteEngine On
RewriteBase /
RewriteRule ^feed([0-9]+)$ ../image.php?id=$1 [L]
因此,基本上我想将来自子域中的 feed 的请求重定向到位于主域(仅上面一个目录)中的 image.php 文件。使用../
似乎不像在 PHP 中那样有效。
那么我该如何重写父目录中的文件?
答案1
听起来,您已经位于子域的文档根目录中,该子域可能在其自己的虚拟主机中定义(恰好指向主域文档根目录中的子目录)。
不幸的是,你不能使用 mod_rewrite 在文档根目录之上/之外进行内部重写.htaccess
。.htaccess
在RewriteRule
代换仅接受 URL 路径,而不是文件系统路径。但是,如果您在服务器配置中直接使用 mod_rewrite,则可以执行此操作。在服务器配置中,您可以指定文件系统路径作为替换(您需要明确包含完整路径,不能使用相对路径,例如../image.php
)。
或者,.htaccess
您可以使用 mod_proxy 和 mod_rewrite 将请求从子域代理到主域。但是,这可能仍需要一些服务器配置。例如:
RewriteRule ^feed([0-9]+)$ http://maindomain.com/image.php?id=$1 [P]