美好的一天,
我已经做了很多搜索,但无法得到明确的答案。
我有一个目录设置:
/无功/网络/ HTML /α/β/高速缓存/△
我想要一个这样的网址:
http://localhost/alpha/beta/delta
查看缓存/,查看delta目录是否存在,并将用户转发到那里。另一方面,如果delta目录(或包含index.html)不存在,则将用户转发到localhost / alpha / beta / index.php
这是我的htaccess文件,它位于alpha / beta /
中RewriteBase /alpha/beta/
# this next line is included because localhost/alpha/beta/ was forwarding to cache/
# there is probably a better way
RewriteCond $1 \w{1}
RewriteCond %{DOCUMENT_ROOT}/alpha/beta/cache/$1 -d
RewriteRule ^(.*)$ cache/$1 [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ index.php
这很有效(很多*),但我不想要这个。我想要相对路径,所以使用该软件的人不必修补所包含的.htaccess文件。
我认为RewriteBase会影响RewriteCond,但事实并非如此。如果我删除%{DOCUMENT_ROOT},则条件显然会尝试匹配文件系统/目录上的alpha / beta / cache / delta。使用
RewriteCond cache/$1 -d
也不会针对相对目录进行检查。
我不能在条件中使用{REQUEST_URI},因为我得到/ var / www / html / alpha / beta / delta / cache / delta /
我无法找到隔离当前子目录以供在条件中使用的方法,而不包括请求。
请帮忙。我在绳子尽头。
更新:如果我使用
RewriteCond cache/$1/index.html -F
它可以工作,但重写日志条目非常大。它似乎做了很多冗余检查以完成结果,我不确定它是一个很好的解决方案。