使用apache mod_alias和mod_rewrite时如何检测URI中的根文件夹?

时间:2010-10-07 21:10:17

标签: php apache mod-rewrite

使用apache mod_alias和mod_rewrite时如何检测URI中的根文件夹?

我有一个网站在文档根目录的子文件夹中运行,例如/ var / www / this / an / other / dir在这个文件夹中我有一个带有mod_rewrite规则的.ht_access文件,用于将所有内容重定向到index.php

# Do nothing if the file (s), link (l) or (d) exists
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

# Redirect everything else to index.php
RewriteRule ^.*$ index.php [E=PORT:%{SERVER_PORT},NC,L]`

我还设置了一个易于访问的别名

alias /foo /var/www/this/an/other/dir

现在当我转到地址http://host.com/foo/bar/时,如何检测到/ foo是我的URI的根文件夹?

2 个答案:

答案 0 :(得分:2)

最简单的方法是直接在Apache中设置一个env变量:

SetEnv AliasRoot /foo

然后,您可以通过$_ENV superglobal:

访问它
$root = $_ENV['AliasRoot'];

我认为在纯PHP中没有一种可靠的方法可以做到这一点。

答案 1 :(得分:0)

我不太明白你的问题 根文件夹始终相同 - /。无需确定。
如果您需要虚拟document_root - 只需使用dirname($_SERVER["SCRIPT_FILENAME"])