【问题标题】:htaccess to nginx configurationhtaccess 到 nginx 配置
【发布时间】:2016-10-21 23:50:30
【问题描述】:

我有两个 htaccess 文件,一个用于网站(根文件夹),一个用于其管理面板(管理文件夹):

根

RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

RewriteRule ^admin/(.*)$ admin/$1 [NC,L,QSA]
RewriteRule ^sign-out$ index.php?act=auth-signOut [NC,L,QSA]

RewriteRule ^get/(.*)$ index.php?pag=download&id=$1 [NC,L,QSA]
RewriteRule ^g/(.*)$ callback.php?act=download-download&id=$1 [NC,L,QSA]
RewriteRule ^activate/(.*)$ index.php?act=auth-activate&u=$1 [NC,L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?pag=cms&title=$1 [NC,L,QSA]

/admin

RewriteRule ^sign-in$ views/login.html [NC,L,QSA]
RewriteRule ^sign-out$ index.php?act=auth-logout [NC,L,QSA]

我能够将网站部分转换为 nginx 配置规则,但是当我添加管理部分时它不起作用。任何帮助表示赞赏。

server {
    listen       80;
    server_name  fileorbs.com;

        root /var/www/fileorbs/public_html;
        index index.php index.html;


        location ~ \.php$ {
                try_files $uri /index.php =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                fastcgi_pass   127.0.0.1:9000;
                fastcgi_index index.php;
                fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                include fastcgi_params;
        }

    location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.

        if (!-e $request_filename){
            rewrite ^/(.*)$ /index.php?pag=cms&title=$1&code=$2;
        }

        rewrite ^/admin/(.*)$ /admin/$1 last;
        rewrite ^/sign-out$ /index.php?act=auth-signOut last;
        rewrite ^/get/(.*)$ /index.php?pag=download&id=$1 last;
        rewrite ^/g/(.*)$ /index.php?act=download-download&id=$1 last;
        rewrite ^/activate/(.*)$ /index.php?act=auth-activate&u=$1 last;

        try_files $uri $uri/ =404;
    }

    location /admin {
        rewrite ^/sign-in$ /views/login.html last;
        rewrite ^/sign-out$ /index.php?act=auth-logout last;
    }
}

【问题讨论】:

    标签: apache .htaccess nginx


    【解决方案1】:

    注意,apache 首先检查 root-.htaccess,然后转到 /admin。 Nginx 使用位置作为首选匹配。这是两种完全不同的方法。

    http://nginx.org/en/docs/http/request_processing.html

    将 last 添加到您告诉​​ nginx“执行该重写”的每个重写中,因此实际上,您的 /admin 位置现在不是任何地方的进程。

    http://nginx.org/ru/docs/http/ngx_http_rewrite_module.html#rewrite

    另外,该规则究竟应该做什么?据我所知,它只是重定向到自己一次:

    RewriteRule ^admin/(.*)$ admin/$1 [NC,L,QSA]
    rewrite ^/admin/(.*)$ /admin/$1 last;
    

    如果我理解你的配置正确,类似的东西应该可以工作:

    server {
        listen       80;
        server_name  fileorbs.com;
    
            root /var/www/fileorbs/public_html;
            index index.php index.html;
    
    
            location ~ \.php$ {
                    try_files $uri /index.php =404;
                    fastcgi_split_path_info ^(.+\.php)(/.+)$;
                    fastcgi_pass   127.0.0.1:9000;
                    fastcgi_index index.php;
                    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
                    include fastcgi_params;
            }
    
        location / {
            # First attempt to serve request as file, then
            # as directory, then fall back to displaying a 404.
    
            if (!-e $request_filename){
                rewrite ^/(.*)$ /index.php?pag=cms&title=$1&code=$2;
            }
    
            rewrite ^/sign-out$ /index.php?act=auth-signOut last;
            rewrite ^/get/(.*)$ /index.php?pag=download&id=$1 last;
            rewrite ^/g/(.*)$ /index.php?act=download-download&id=$1 last;
            rewrite ^/activate/(.*)$ /index.php?act=auth-activate&u=$1 last;
    
            try_files $uri $uri/ =404;
        }
    
        location /admin {
            rewrite ^/admin/(.*)$ /admin/$1 break;
            rewrite ^/sign-in$ /views/login.html last;
            rewrite ^/sign-out$ /index.php?act=auth-logout last;
            try_files $uri $uri/ =404;
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2015-01-14
      • 1970-01-01
      • 1970-01-01
      • 2016-03-26
      • 2018-02-24
      • 1970-01-01
      • 2019-04-09
      • 2019-05-19
      • 2017-07-25
      相关资源
      最近更新 更多