我需要在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 ...
我将非常感谢任何帮助! 非常感谢。
答案 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;
}