Nginx Mod_Rewrite

时间:2014-07-14 19:41:07

标签: mod-rewrite nginx

您好我试图正确设置mod_rewrite,我对lighttpd没有任何问题,但我想换掉nginx。

location /highscores {
    rewrite  ^/highscores  /?page=highscores last;
} 
location /highscores/ {
    rewrite  ^/highscores/(.*)/(.*)$  /?page=highscores&list=$1&page=$2 last;
}

问题是,如果你设置/ highscores /这样的方向,结尾有错误404,如果你尝试/ highscores / example也有404,但/ highscores / example /工作正常,没有人能解决这个问题吗?

我可以在google上找到解决方案。

配置

server {
        listen   80;
    server_name example.com;
    root /usr/share/nginx/www/example.com;
    include /etc/nginx/include.d/all-common;
    include /etc/nginx/include.d/example.com;
}

所有常见

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

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    location ~ \.php$ {
            try_files $uri =404;
            fastcgi_pass unix:/var/run/php5-fpm.sock;
            fastcgi_index index.php;
            fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include fastcgi_params;

    }
include.d中的example.com包含我粘贴在顶部的其余代码

1 个答案:

答案 0 :(得分:0)

我做了同样的道路,所以我清楚地看到你的感受。 :)

请获取此项目,并测试您的设置: https://github.com/TeXXaS/nginx-configs

关键点是:

error_log /var/log/nginx/testing-rewrite-error.log debug;
rewrite_log on;

这样你就可以看到发生了什么。

Nginx有类似内部重定向的东西。因此,如果您触摸indexrewrite - 则表示将重新处理新网址。如果你研究那个git repo--有产品解决方案,部分重写。这意味着example.com/products/会导致一个脚本,而example.com/product/the_product - 会转到其他位置。