我需要在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]
此代码是在我的网站,因为我需要隐藏在地址栏文件夹(/pipe理/)login后所在的文件。 而当有人已经login,地址栏就像www.domain.com/username ,当你点击菜单地址就像www.domain.com/username/page1,www.domain.com/username/page2,www.domain .com /用户名/ page3 。 这是我需要在nginx中实现的。 因为现在是完整的后端没有function。 当我login到后端,我redirect到www.domain.com/username,但在屏幕上,我只能看到文件未find。 在后端工作只有当我手动添加www.domain.com/admin/index.php 。
这是我对nginx的实际configuration:
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 …
我将非常感激任何帮助! 非常感谢。
你把这个放在你的位置,这意味着你所有的请求都不匹配。 您必须创建一个位置角色特定于此条目位置/
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; }