【问题标题】:Nginx rewrite for php patchNginx 重写 php 补丁
【发布时间】:2015-11-14 22:11:39
【问题描述】:

我需要重写那些网址:

rewrite /shop.php?category=catergory1 http://example.com/c123 permanent;
rewrite /shop.php?category=category2 http://example.com/c234 permanent;

但得到“未指定输入文件”而不是重定向。

我应该如何正确地写这些?

附言我有大约一百个类似的链接

^/shop.php?category=camp&subcategory=&showitem=26
^/shop.php?category=stove&subcategory=&showitem=14

并且需要将它们全部重定向到 2 个不同的 url - 所有 category=camp 到 /url1,所有 category=stove 到 /url2 除了基本 url 中的第一个参数之外,我不需要所有参数。

p.p.s 我应该为我的项目做大约 2000 个永久重定向。 这种重定向的处理会降低 nginx 的工作速度吗?

【问题讨论】:

    标签: php redirect nginx


    【解决方案1】:

    关于你的 p.s.此配置应该适合您。在重写中直接匹配查询是行不通的。

    location /shop.php {
        if ($args ~* "/?category=camp") {
            rewrite ^ http://example.com/url1? permanent;
        }
        if ($args ~* "/?category=stove") {
            rewrite ^ http://example.com/url2? permanent;
        }
    }
    

    “url1”后面的问号用于从旧的url中删除查询。

    我不太确定这么多重定向的性能,但是this question 的答案包含有关该事实的一些信息。

    【讨论】:

    • ty 会阅读它。不幸的是没有工作。我的错,我认为它应该与其他参数一起使用。真正的基本网址是/shop.php?category=camp&subcategory=&showitem=30,它不适用于您建议的方式。
    • 对我来说,它也适用于这些参数。你能在没有 if 的情况下尝试重写,然后只调用 /shop.php 吗?
    • 我刚刚重写了整个 shop.php,没有参数。无论如何,请寻求帮助
    猜你喜欢
    • 1970-01-01
    • 2017-04-04
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2015-05-21
    • 1970-01-01
    • 2019-11-11
    • 2017-03-28
    相关资源
    最近更新 更多