我有一个
.htaccess
文件,它将每个请求重定向到 ./core/index.php
。但对于 ./node_modules/
和 ./assets/
文件夹中的静态文件,我想为它们启用正常重定向。
那么,
url/whatever/page/
-> 重定向到:core/index.php
url/assets/image/file.png
-> 获取:assets/image/file.png
url/node_modules/css/file.css
-> 获取:node_modules/css/file.css
我当前的代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ core/index.php [L,QSA]
所以你可以做的是,首先检查它是否转到资产,然后重定向到那里,然后重定向到node_modules。现在,如果没有满足任何条件,那么您将重定向到索引:
RewriteEngine On
RewriteCond %{DOCUMENT_ROOT}/assets/$1 -f
RewriteRule ^(.+) assets/$1 [L]
RewriteCond %{DOCUMENT_ROOT}/node_modules/$1 -f
RewriteRule ^(.+) node_modules/$1 [L]
RewriteCond %{THE_REQUEST} \s/assets/ [NC,OR]
RewriteCond %{THE_REQUEST} \s/node_modules/ [NC,OR]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ core/index.php [L,QSA]
有两种选择:
任一使用条件:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/assets/
RewriteCond %{REQUEST_URI} !^/node_modules/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ core/index.php [L,QSA]
或明确的例外:
RewriteEngine On
RewriteRule ^/?assets/ - [END]
RewriteRule ^/?node_modules/ - [END]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ core/index.php [L,QSA]