【问题标题】:Converting a rewrite from htaccess to nginx将重写从 htaccess 转换为 nginx
【发布时间】:2015-11-11 23:11:05
【问题描述】:

我目前在Apache 中使用此htaccess 代码将地址栏中的URLhttp://www.domain.com/list?m=100 更改为http://www.domain.com/list/100

RewriteEngine On

<IfModule mod_rewrite.c>
  RewriteCond %{REQUEST_FILENAME} !-d 
  RewriteCond %{REQUEST_FILENAME} !-f
  RewriteRule ^([^.]*)$ index.php?m=$1 [QSA,L]
</IfModule>

上面的htaccess在/list目录下。

我尝试将其转换为nginx(使用http://winginx.com/en/htaccess),但无法正常工作。这是我尝试过的

location /list/ {
    if (!-e $request_filename){
        rewrite ^/([^.]*)$ /index.php?m=$1 break;
    }
}

上面只是下载PHP代码。我也尝试将break改为last,但它只是打开主页(地址栏中的url更改为http://www.domain.com/list/100)。有什么建议可以让它发挥作用吗?

【问题讨论】:

    标签: php apache .htaccess mod-rewrite nginx


    【解决方案1】:

    你不需要转换所有东西,使用这个:

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

    之后别忘了重新启动 nginx 以查看更改。

    【讨论】:

    • 对于整数值,我更喜欢[0-9]\d 然后用.* 接受所有值。
    • 不工作。它仍然只是显示主页。如果我尝试http://www.domain.com/list?m=100 而不将代码添加到sites-available/default,它也可以工作
    • 所以你的文件在 www.domain.com/list.php 或者它位于一个名为 list 的目录中?比如 /var/www/html/list/?从上面的链接看,好像是/var/www/html/index.php。
    • 实际上是index.php on /usr/share/nginx/html/list/
    • 好吧,我改成重写^/list/(.*)$ /list/index.php?m=$1 last;现在它正在工作。
    猜你喜欢
    • 2017-06-06
    • 1970-01-01
    • 1970-01-01
    • 2021-10-21
    • 1970-01-01
    • 2012-02-25
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多