[英]Nginx rewrite directory and exclude a subdirectory
這是我當前的 nginx 配置文件。
server {
listen 6063;
root /var/www/html/project;
index index.php;
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php7.2-fpm-backend.sock;
}
rewrite ^/admin/(.*)$ /admin/index.php break;
}
對 /admin 的任何訪問都將重寫到 /admin/index.php。
現在由於某些原因,我必須將 css 文件夾、js 文件夾添加到 /var/www/html/project/admin/includes。
所以新的要求是對 /admin/includes/* 的任何訪問都將訪問 css 和 js 的真實文件。 所有其他訪問/admin/*(不是/admin/includes)將重寫到/admin/index.php。
或者我可以說任何對文件夾 /admin 的訪問(如果不存在)(如 /admin/includes/css/example.css),然后重寫為 /admin/index.php
謝謝,
好的,我找到了答案。
location /admin {
if (!-e $request_filename) {
rewrite (.*)$ /admin/index.php last;
}
}
如果對不存在的文件夾 /admin 的任何訪問(它不是像 css 或 js 文件這樣的真實文件)將重寫到 /admin/index.php。
Nginx 使用最長的匹配位置( 參見文檔),因此提供更具體的位置指令就足夠了:
server {
…
location ~ /admin/css {
}
location ~ /admin {
rewrite (.*)$ /admin/index.php last;
}
}
然后,如果有任何匹配/admin/css
,它將只處理空塊(因此默認提供服務),並且所有匹配/admin
(而不是/admin/css
)將命中重寫。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.