我目前将所有内容重定向到 app/index.html,因为我有一个客户端单页应用程序。但是,我想跳过实际文件和目录的重定向。我已经做到了这一点。但是,当我添加 RewriteCond 以跳过目录文件时,它也会计算文档根目录。这会导致访问文档根目录(例如点击)http://localhost:8080
仅列出我的目录内容。我如何才能让它不适用于文档根目录或任何其他更好的方法?PS 我还跳过了 /api 目录。
以下是我目前所掌握的信息:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/api
RewriteRule ^(.*)$ /app/index.html/$1 [NC]
所以本质上我想我要问的是:我怎样才能跳过除文档根目录之外的目录?
解决方案
在给出的答案的帮助下,Krist van Besien
我找到了解决方案。
# not a directory
RewriteCond %{REQUEST_FILENAME} !-d [OR]
# or if it is the document root
RewriteCond %{REQUEST_URI} ^/$
# not a file
RewriteCond %{REQUEST_FILENAME} !-f
# not /api
RewriteCond %{REQUEST_URI} !^/api$
RewriteRule ^(.*)$ portal/index.html/$1 [NC]
答案1
您可以添加一个RewriteCond:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/api
RewriteCond %{REQUEST_URI} !^/$
RewriteRule ^(.*)$ /app/index.html/$1 [NC]
答案2
我建议改变这一行:
RewriteRule ^(.*)$ /app/index.html/$1 [NC]
对此;请注意已^
被删除:
RewriteRule (.*)$ /app/index.html/$1 [NC]