Nginx如何从另一个目录运行网站?

时间:2013-12-18 08:41:14

标签: .htaccess mod-rewrite nginx

我尝试在nginx上运行我的网站,所以前面我做了一些配置:

server {
listen 80;
server_name domain.com;
root /var/www/domain.com/www;
index index.php;

# Use FastCGI with PHP-FPM for all things PHP
location ~ .php$ {
    fastcgi_pass 127.0.0.1:9000;
    fastcgi_param SCRIPT_FILENAME /var/www/domain.com/www$fastcgi_script_name;
    include fastcgi_params;
}
}

这没关系。问题是当我尝试运行管理区域时。管理面板位于子目录/var/www/domain.com/www/admin中,并且有一个index.php文件。在apache中,我只使用重写规则放置了另一个.htaccess文件:

RewriteEngine on

RewriteRule !\.(js|ico|gif|jpg|png|css|htc)$ index.php

一切正常,但如何在nginx中完成?

我的网站是使用正面和管理区域构建的。当您转到domain.com/some_url.html并且管理区域位于domain.com/admin/some_url.html时,前端会运行。目录结构是这样的:

site/
    /module/
   /public_html/
             index.php
             /admin/
                  index.php

因此,当您运行domain.com/admin/时,所有内容都应该提交到/admin/index.php,但现在当我转到domain.com/admin/时会显示管理区域但是当我点击某些链接时所有的trafik都是提交到前面的index.php文件 最诚挚的问候!

1 个答案:

答案 0 :(得分:2)

好的,我现在明白了,

试试这个

server {
listen 80;
server_name domain.com;
root /var/www/domain.com/www;

    location /admin/ {
      rewrite ^ /index.php?$request_uri;
    }

   # Use FastCGI with PHP-FPM for all things PHP
   location ~ .php$ {
      fastcgi_pass 127.0.0.1:9000;
      fastcgi_param SCRIPT_FILENAME /var/www/domain.com/www$fastcgi_script_name;
      include fastcgi_params;
   }
}