Apache到Nginx的迁移问题

时间:2015-04-08 05:51:46

标签: php apache .htaccess mod-rewrite nginx

谁能告诉我如何从apache到nginx重写这个规则?

我尝试了很多在线转换器但是没有工作。

/hotel/.htaccess

<IfModule mod_rewrite.c>
 RewriteEngine on
 RewriteRule    ^$    resources/    [L]
 RewriteRule    (.*) resources/$1    [L]
</IfModule>

/hotel/resources/.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php?url=$1 [PT,L,QSA]

</IfModule>

/hotel/resources/index.php

  if (!empty($_GET['url'])) {
    $GLOBALS['url'] = $_GET['url'];
   }
   require_once(PROJECT_ROOT . DS . 'config' . DS . 'config.inc.php');
   require_once(ROOT . DS . 'hvtengine' . DS . 'library' . DS . 'engine.inc.php');

我试过了:

location / {        
    rewrite ^/$ /resources/ last;
    rewrite /^(.*)$ /resources/$1 last;
    # try_files $uri $uri/ /index.php;
    # Uncomment to enable naxsi on this location
    # include /etc/nginx/naxsi.rules
}

location /resources/ {
    if (!-e $request_filename){
    rewrite ^(.*)$ index.php?url=$1 break;
    }
}

1 个答案:

答案 0 :(得分:0)

由于所有请求都被重写为/resources/,我认为根本没有理由进行重写。只需让它为root服务器。

server {
    root /hotels/resources/;

    location / {
        try_files $uri /index.php?url=$uri;
    }

    location ~ \.php$ {
        # ... php stuff
    }
}