在 Apache 上定向请求,并转换请求 URI 的显示方式

在 Apache 上定向请求,并转换请求 URI 的显示方式

如何配置 Apache 以将对服务器上特定 URL 的请求定向到特定目录,同时转换处理该 URL 的脚本查看该 URL 的方式?

假设我在以下目录中有一个 php 脚本:

/somedir/foo/script.php

我希望所有传入的 HTTP 请求http://服务器/foo/* 由 /somedir/foo/script.php 处理。但是,我还希望脚本知道 REQUEST_URI 变量中 URI 的其余部分是什么。
(URL 的 * 部分是仅对脚本有意义的不透明信息,可以是任何内容)

例如:

http://example.com/foo/

将由 /somedir/foo/script.php 处理,并且脚本将把 REQUEST_URI 视为简单的“/”,并且

http://example.com/foo/the/quick/brown/fox.html

将要由 /somedir/foo/script.php 处理,而 REQUEST_URI 将被视为“/the/quick/brown/fox.html”

我该如何配置 Apache 以达到这样的效果?

(请注意,这严格来说是 Apache 问题;我不想以任何方式改变脚本。)

答案1

使用 mod_rewrite 可以很容易地完成此操作,Wordpress 经常使用此方法

RewriteBase /foo/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /somedir/foo/script.php [L]

相关内容