apache mod 重写问题与文档根目录

apache mod 重写问题与文档根目录

我目前将所有内容重定向到 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]

相关内容