我想创建以/blog
文件夹开头的通配符路径,我使用以下代码
location ~* ^/blog/(.*)$ {
try_files $uri $uri/ $uri.php @rewrites;
}
location @rewrites {
rewrite ^/blog/$ /rewrite/bloguri.php last;
}
以下链接有效,显示的内容/rewrite/bloguri.php
http://www.example.com/blog/randomlink.html
http://www.example.com/blog/randomlink
但以下结构不起作用,我需要它才能工作
http://www.example.com/blog/randomlink/
http://www.example.com/blog/randomlink.php
编辑 :
bloguri.php包含以下内容
<?php
echo "blog";
?>
以下是日志的截图
日志
下面是我的完整 nginx.conf
location ~ ^/~(.+?)(/.*?\.php)(/.*)?$ {
alias /var/www/vhosts/example.com/web_users/$1/$2;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
include /etc/nginx/fastcgi.conf;
}
location ~ \.php(/.*)?$ {
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_pass "unix:///var/www/vhosts/system/example.com/php-fpm.sock";
include /etc/nginx/fastcgi.conf;
}
location ~ /$ {
index index.html index.cgi index.pl index.php index.xhtml index.htm index.shtml;
}
location /blog {
try_files $uri $uri/ /rewrite/blog.php;
}
答案1
尝试这个:
location /blog {
index /rewrite/bloguri.php;
try_files $uri $uri/ /rewrite/bloguri.php;
}
您的问题没有明确说明您想要将所有对不存在文件的请求重定向到脚本,但我认为这就是您正在寻找的。
这一行代码就可以完成这个任务,这也是在 nginx 中实现前端控制器模式的标准方法。