【问题标题】:Nginx rewrite not working with .php extensionNginx 重写不适用于 .php 扩展名
【发布时间】:2016-10-17 05:52:27
【问题描述】:

我正在尝试通过此代码重写 url:

location ~ /canada1/[A-Za-z0-9-_]+/.* {
        rewrite ^/canada1/([A-Za-z0-9-_]+)/.* /atemplates/weather/weather_forecast.php?region=$1&location=$arg_db last;
}

有了这个网址:

/canada1/bc_british_columbia/weather.php?db=90

我已将问题范围缩小到 .php 部分。无论我坚持在那里更换它都可以按预期工作,即 .phd .phq .abcdefg ... 工作正常。我需要做什么才能用那个 .php 扩展名重写那个东西?

感谢您的帮助。

参考:How to rewrite old url with a period, question mark and equals in it?

【问题讨论】:

    标签: php nginx url-rewriting


    【解决方案1】:

    正则表达式位置块按顺序求值。

    如果您希望location ~ /canada1/[A-Za-z0-9-_]+/.* 优先于location ~ \.php$,则需要在配置文件中将第一个放在第二个之前。

    例如:

    location ~ /canada1/[A-Za-z0-9-_]+/.* {
        ...
    }
    location ~ \.php$ {
        ...
    }
    

    详情请见this document

    【讨论】:

    • 啊...谢谢理查德,工作就像一个魅力。我很高兴这是像位置顺序这样简单的事情......那些小事情往往会让我绊倒sigh
    猜你喜欢
    • 1970-01-01
    • 2013-04-10
    • 2018-08-21
    • 2015-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多