【问题标题】:nginx rewrite do nothingnginx 重写什么都不做
【发布时间】:2016-11-03 06:53:38
【问题描述】:

我用 PHP 和 MySQL 创建了一个小的 CMS。 现在我尝试激活 NGINX 重写,但它不起作用,我不明白为什么?

(示例)我有一个页面

http://www.example.com/cars.php?id=bmw

我尝试使用这条规则

最后重写 ^/listings/(.*)$ /listing.html?listing=$1;

发件人:https://www.nginx.com/blog/creating-nginx-rewrite-rules/

但它不起作用。

最后重写 ^/cars/(.*)$ /cars.php?id=$1;

我得到了同样丑陋的 URL http://www.example.com/cars.php?id=bmw

我应该更改 PHP 文档中的 URL 锚点吗? 来自

<a href="cars.php?id='.$row['name'].'"> BWM </a>

<a href="cars/'.$row['name'].'"> BWM </a>

当我这样做的时候。 但是当我在联系页面上从 BMW 端点击时,我得到了这个奇怪的 URL

http://www.example.com/cars/contact

有人知道我做错了什么吗?

【问题讨论】:

    标签: php nginx url-rewriting


    【解决方案1】:

    在您的文档中,您指定的 URI 没有前导斜杠。这意味着它们被认为是相对于当前页面的。

    您想使用漂亮的 URI(例如:/cars/bmw),这很好,只是它包含一个嵌入的 /,看起来像一个目录路径。此目录路径用于构造不包含前导/ 的URI。

    解决方案是为您的所有 URI 提供前导 /,这将避免任何歧义。

    例如:

    <a href="/cars/'.$row['name'].'"> BWM </a>
    <a href="/contact"> Contact Page </a>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-19
      • 2014-04-14
      • 2023-03-05
      • 1970-01-01
      • 2016-05-07
      • 2019-08-16
      • 2017-06-30
      • 2020-07-29
      相关资源
      最近更新 更多