如何配置 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]