2

是否可以引用完整/绝对路径目录,例如/usr/home/public_html/x在 .htaccess mod_rewrite 中?

我尝试了最明显的情况,将以下内容放在子域的 .htaccess 中(存储在 public_html 的文件夹中),希望它映射(而不是重定向!)到绝对目录所指向的文件上:

RewriteEngine on
RewriteRule /xochotl /usr/home/public_html/x.php

这不起作用...我收到 500 内部服务器错误

主 public_html 目录中的 .htaccess 仅具有以下内容,并且它适用于相对目录...

RewritEngine on
RewriteRule /xochotl x.php
4

1 回答 1

3

mod_rewrite在每个目录上下文中使用时(即使用),您不能映射到文件路径.htaccess。但是,当您将规则放在每个服务器上下文中时(httpd.conf在主服务器或虚拟服务器配置中),您应该能够映射到绝对路径。

这样做的原因是因为mod_rewrite在每个目录上下文中的工作方式。mod_rewrite转换 URL,然后将自己指定为请求的处理程序。这允许它通过 Apache 发送内部重定向,否则在处理的后期是不可能的。

内部重定向是通过调用 Apache API 函数完成的ap_internal_redirect,该函数需要一个 URI,然后重新映射到文件系统。附带说明一下,当您执行涉及为后续请求读取相同文件的重定向时(例如,任何时间都在站点根目录中),这也恰好是原因%{REQUEST_URI}和变化。%{REQUEST_FILENAME}.htaccess.htaccess

于 2010-07-24T21:17:43.117 回答