我正在try 将Domain.com/Review/(Dynamic).php重写为/Review/index.php?slug=$1

这是我的服务器模块,它不能工作.当我try 重写动态URL时,总是给我一个404.

location / {
    index index.php index.html index.htm;
    try_files $uri $uri/ =404;
}

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

location /reviews/ {
    rewrite ^/reviews/(.*).php$ /reviews/index.php?slug=$1 last;
}

error_page 404 /404.php;

当我从重写行中删除.php并try /reviews/namehere时,它工作得很好.

如有任何帮助,我们不胜感激.

推荐答案

.php结尾的URL都由location ~ \.php$块处理,因此找不到包含rewrite...last语句的位置.这就解释了当你go 掉.php的时候它为什么会起作用.

目的地URL /reviews/index.php?slug=$1也符合rewrite的条件,因此任何解决方案都需要特别小心,以避免重定向循环.

try 将重写语句移到location ~ \.php$块中,并将其更改为rewrite...break语句,以避免潜在的重定向循环.

例如:

location ~ \.php$ {
    rewrite ^/reviews/index.php$ /reviews/index.php break;
    rewrite ^/reviews/(.*).php$ /reviews/index.php?slug=$1 break;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}

此外,在其上方添加另一条rewrite...break语句(如图所示),以防止对/reviews/index.php的请求被 destruct .

Php相关问答推荐

根据类别在WooCommerce中添加库存数量后缀

WooCommerce:在 checkout 审核单和发票中显示定制产品数据

在WooCommerce我的帐户部分添加带有自定义链接的自定义菜单项

在Laravel Eloquent中实现一对多关系

根据发货类别在WooCommerce产品页面中显示快捷代码

Codeigniter 4中的未定义变量$HOME

CKEDITOR-如何在PHP中判断提交后的空数据

使用DOMPDF获取PDF格式的本 map 像

在WooCommerce Admin产品列表自定义列中显示来自元数据的统计数据

既然setSQLLogger()已被弃用,如何使用中间件在 Doctrine 3 中记录查询执行时间?

Woocommerce 临时购物车税未根据第一个请求正确计算

图片上传成功

如何在 PHP 中对具有相同数组值的值求和

用于检测此模式的正则表达式:something;something=something,something=something... 未知次数

Symfony 6 中的入口点 (public/index.php) - 它是如何工作的?

获取具有所有特定相关模型的模型

如何使 Wordpress Woocommerce 自定义输入字段成为必填字段

构建 [Controller] 时目标 [Interface] 不可实例化

我正在使用 Baryryvdh/laravel-snappy 从 HTML 导出 PDF 它正在工作但缩小了 pdf 文件

检测字符串是否包含Letter with Tilde或Letter + Combining Tilde