Nginx URL重写 - 登录后从地址栏/管理/删除

时间:2014-01-28 13:12:31

标签: nginx

如何在登录后台www.domain.com / administration / index.php后从我的地址栏中删除? 所以登录后我的网址就像:

www.domain.com/index.php

我的配置:

server {
    server_name domain.com;
    return 301 $scheme://www.domain.com$request_uri;
}

server {
    listen 80;
    root /usr/share/nginx/www;
    index index.php;
    server_name www.domain.com;



    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;
    }
}

1 个答案:

答案 0 :(得分:1)

你可以设置一个任意的cookie(比如'logged_admin = 1')然后检查location /块中的那个cookie,就像这样

location / {
  if ($http_cookie ~ 'logged_admin=1;?') {
    rewrite ^/([^\.]*)$ /administration/$1.php last;
  }

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

我应该说你应该改进if块中的正则表达式来处理一些边缘情况,比如以管理员身份登录时访问/administration/xyz.php等等。