我的网站应尝试提供来自缓存子目录(/ app / storage / cache)的所有请求,以便从/app/storage/cache/two.html
提供/two.html请求更多例子: /从/app/storage/cache/index.html提供 /two.html来自/app/storage/cache/two.html /文件夹从/app/storage/cache/folder/index.html
提供如果没有找到文件/目录,它应该使用php文件/app/router.php来处理所有请求
我尝试了什么:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /app/storage/www/$1 [L]
RewriteRule ^(/)?$ /app/storage/www/$1 [L]
适用于捕获所有网址并提供正确的资源而不更改网址。现在赶上其他所有:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . app/router.php [L]
这也有效,但第一组条件不再有效......
答案 0 :(得分:1)
我可以通过三种方式思考如何解决这个问题。一个是通过router.php检查缓存,然后通过同一个文件生成页面。另外两种方式涉及一些重写魔法。
我没有测试其中任何一个。
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /app/storage/www/$1
#From this point on, the file/dir either exists or
#%{REQUEST_FILENAME} is now /app/storage/www/something
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^app/storage/www/ /app/router.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/app/storage/www/$1 !-f
RewriteCond %{DOCUMENT_ROOT}/app/storage/www/$1 !-d
RewriteRule ^(.*)$ /app/router.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /app/storage/www/$1 [L]
使用Apache的主配置文件(httpd.conf)而不是.htaccess文件可以加快这两种方法,因为它不需要在每个请求上搜索/读取.htaccess文件。