使用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的根文件夹?
答案 0 :(得分:2)
最简单的方法是直接在Apache中设置一个env变量:
SetEnv AliasRoot /foo
然后,您可以通过$_ENV
superglobal:
$root = $_ENV['AliasRoot'];
我认为在纯PHP中没有一种可靠的方法可以做到这一点。
答案 1 :(得分:0)
我不太明白你的问题
根文件夹始终相同 - /
。无需确定。
如果您需要虚拟document_root - 只需使用dirname($_SERVER["SCRIPT_FILENAME"])