cms后端的Nginx重写规则

时间:2014-01-27 23:19:54

标签: apache .htaccess mod-rewrite nginx

我需要在nginx服务器中制作url重写规则(服务器块),就像我以前的apache服务器一样。
这是.htaccess中我需要实现(转换)到现有代码的代码:

RewriteRule ^([A-Za-z0-9-]+)/([A-Za-z0-9-/_]+)$ admin/index.php?hotelname=$1&do=$2 [QSA]

RewriteRule ^(([A-Za-z0-9-/]+)+)$ admin/index.php?hotelname=$1 [L]

此代码在我的网站上,因为我需要隐藏在地址栏文件夹(/ admin /)中,登录后找到文件。当某人已经登录时,地址栏就像 www.domain.com/username 一样,当您点击菜单时,地址就像 www.domain.com/username/page1 www.domain.com/username/page2 www.domain.com/username/page3 。 这是我需要在nginx中实现的。因为现在是没有功能的完整后端。当我登录后端时,我被重定向到 www.domain.com/username 但是在屏幕上我只能看到找不到文件。在后端工作时我只能在manualy工作添加 www.domain.com/admin/index.php

这是我对nginx的实际配置:

server_names_hash_bucket_size  64;

server {
    listen 80;
    server_name example.com;
    return 301 $scheme://www.example.com$request_uri;
}

server {
        listen 80;
        root /usr/share/nginx/www;
        index index.php;
        server_name www.example.com;
        error_page 404 http://www.example.com/404.php;
        autoindex off;



   location / {
        rewrite ^([^\.]*)$ /$1.php;
    }

    location = / {
        rewrite ^ /index.php;
    }


    location ~ \.php$ {
        include fastcgi_params;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
    }

    location ~ /\.ht {
            deny all;
      }
}

当我尝试将我的块更改为:

location / {
        rewrite ^([^\.]*)$ /$1.php;
        rewrite ^/([A-Za-z0-9-]+)/([A-Za-z0-9-/_]+)$ /admin/index.php?hotelname=$1&do=$2;
        rewrite ^/(([A-Za-z0-9-/]+)+)$ /admin/index.php?hotelname=$1 break;
    }

我的每个css文件都有错误500 ...

我将非常感谢任何帮助! 非常感谢。

1 个答案:

答案 0 :(得分:0)

您将此放在您的/位置,这意味着您在放弃此处之前所有请求都不匹配。您必须在位置/

之前创建特定于此条目的位置角色
location ^/([A-Za-z0-9-]+)/([A-Za-z0-9-/_]+)$ {
    rewrite ^/([A-Za-z0-9-]+)/([A-Za-z0-9-/_]+)$ /admin/index.php?hotelname=$1&do=$2;
}