如何在Nginx服务器上为高级yii2设置URL重写规则

时间:2018-12-19 06:44:42

标签: nginx yii2-advanced-app

我在本地服务器(即apache服务器)上有我的项目,并且在我的.htaccess文件中有一些重写规则来修改url,并且一切正常,但是我只是将项目移到具有nginx的生产服务器上发生索引页面正确显示的情况,当我尝试访问任何其他链接时,它抛出错误404页面而不是nginx。下面是我对apache服务器的重写规则,也是我的nginx服务器的当前设置

FOR APACHE SERVER
Options +FollowSymlinks
RewriteEngine On

# deal with admin first
RewriteCond %{REQUEST_URI} ^/trobay/(admin) 
RewriteRule ^admin/assets/(.*)$ backend/web/assets/$1 [L]
RewriteRule ^admin/css/(.*)$ backend/web/css/$1 [L]
RewriteRule ^admin/js/(.*)$ backend/web/js/$1 [L]
RewriteRule ^admin/img/(.*)$ backend/web/img/$1 [L]
RewriteRule ^admin/uploads/(.*)$ backend/web/uploads/$1 [L]


RewriteCond %{REQUEST_URI} ^/trobay/(admin)  
RewriteRule ^.*$ backend/web/index.php [L]



RewriteCond %{REQUEST_URI} ^/trobay/(assets|css)
RewriteRule ^assets/(.*)$ frontend/web/assets/$1 [L]
RewriteRule ^css/(.*)$ frontend/web/css/$1 [L]
RewriteRule ^js/(.*)$ frontend/web/js/$1 [L]
RewriteRule ^plugins/(.*)$ frontend/web/plugins/$1 [L]
RewriteRule ^img/(.*)$ frontend/web/img/$1 [L]
RewriteRule ^item_img/(.*)$ frontend/web/item_img/$1 [L]
RewriteRule ^uploads/(.*)$ frontend/web/uploads/$1 [L]
RewriteRule ^itemImg/(.*)$ frontend/web/itemImg/$1 [L]


RewriteCond %{REQUEST_URI} !^/trobay/(frontend|backend)/themes/
RewriteCond %{REQUEST_URI} !^/trobay/(frontend|backend)/web/(uploads|img|item_img|itemImg)/
RewriteCond %{REQUEST_URI} !^/trobay/(frontend|backend)/web/(assets|css|js|plugins)/
RewriteCond %{REQUEST_URI} !index.php
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^.*$ frontend/web/index.php

当前的NGNIX设置

server {
    listen 80;
    server_name _;
    access_log /data/wwwlogs/access_nginx.log combined;
    root /data/wwwroot/default;
    index index.html index.htm index.php;
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    location /nginx_status {
      stub_status on;
      access_log off;
      allow 127.0.0.1;
      deny all;
    }


 location ~ [^/]\.php(/|$) {
      #fastcgi_pass remote_php_ip:9000;
      fastcgi_pass unix:/dev/shm/php-cgi.sock;
      fastcgi_index index.php;
      include fastcgi.conf;
    }
    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {
      expires 30d;
      access_log off;
    }
    location ~ .*\.(js|css)?$ {
      expires 7d;
      access_log off;
    }
    location ~ /\.ht {
      deny all;
    }
  }

请问有没有办法我可以对nginx使用相同的重写规则,或者有其他解决此问题的方法,谢谢您的帮助

0 个答案:

没有答案