nginx - url中的nginx重写子文件夹不起作用
问题描述
我有一个以前是 apache 的站点,但由于某些情况,我必须转移到 vps 并改用 nginx。我几乎是 nginx 的菜鸟
我的文件夹结构是
root/pages/[我所有的页面文件,包括索引]
我想删除 url 中的 pages 文件夹,
所以从
1. mydomain.net/pages/index.php
2. mydomain.net/pages/subpage.php
至
1. mydomain.net
2. mydomain.net/subpage
在阿帕奇我使用:
RewriteEngine On
#remove php file extension-e.g. https://example.com/file.php will become https://example.com/file
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php [NC,L]
#remove folder name on link e.g. https://example.com/pages/file.php will become https://example.com/file.php
RewriteRule ^$ pages/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ pages/$1 [NC,L]
现在我尝试使用这些代码将其更改为 nginx
server {
root /var/www/html;
index pages/index.php;
server_name mydomain.net www.mydomain.net;
# to run php
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}
#deny htaccess
location ~ /\.ht {
deny all;
}
# remove .php extension in url
location @extensionless-php {
rewrite ^(.*)$ $1.php last;
}
# supposed to remove pages folder in url
location /pages
{
rewrite ^/pages(/.*)$ $1 last;
}
}
mydomain.net工作正常
但不知何故,我在mydomain/subpage中遇到了 404 错误
解决方案
推荐阅读
- javascript - 无法通过 Javascript 读取客户端 HTML 属性中所做的更改到 ASP.NET 服务器端
- python - 使用`django-storages`上传时如何获取mp4的缩略图?
- react-native - 无法使用 React Native CLI 初始化版本低于 0.60.0 的项目
- graphql - GraphQL 和 ACL
- simulation - 如何重复模拟 1000 次以获得 1000 个不同的数据集
- html - 如何对齐 Bootstrap Dropright 菜单,使其向上打开(与默认的向下方向不同)?
- c# - 为什么oracle实体框架这么慢?700 毫秒 vs 30 毫秒,使用原始 SQL
- laravel - 如何在选择框Multi中显示我一直选择的元素?
- c# - 玩家在地面上不动,但在地面上移动
- assembly - 为什么 movzx 指令不允许带有双字源操作数的四字目标操作数?