2015-10-12 2 views
0

Итак, я использую apache для всех моих проектов PHP, но теперь я был вынужден использовать nginx на сервере. Я не знаю, как делать красивые URL-адреса с nginx. Поэтому я начал конвертировать мой файл .htaccess в сценарий конфигурации nginx и попытался изменить файл конфигурации nginx, но не повезло.Перенос с apache на nginx

Это мой .htaccess файл:

Options -MultiViews 
RewriteEngine On 

RewriteBase /wallfly-mvc/public 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 

RewriteRule ^(.+)$ index.php?url=$1 [QSA,L] 

Это мой nginx.conf сервер блок:

server { 
    listen 80; listen [::]:80; 
    server_name deco3801-superflyz.uqcloud.net; 
    root   /var/www/htdocs; 

    include "set_cookie.conf"; 
    rewrite_by_lua_file "etc/nginx/lua/auth_filter.lua"; 

    location/{ 
     index index.html index.htm index.php index.jsp index.aspx; 
     try_files $uri $uri/ =404; 
    } 

    location /wallfly-mvc/public/ { 
     if (!-e $request_filename) { 
      rewrite ^/wallfly-mvc/public/(.+)$ /wallfly-mvc/public/index.php?url=$1 break; 
     } 
    } 
} 

Я хочу, чтобы каждый запрос, чтобы указать на общественности/индекса. php. Это моя структура проекта:

wallfly-mvc/ 
    app/ 
    public/ 
    index.php 
    css/ 
    js/ 
    img/ 

Как я должен изменить файл nginx.conf? Любая помощь будет оценена по достоинству.

+0

Вы должны изменить корень в config: например root/wallfly-mvc/public; – Mimouni

ответ

0

Вы можете использовать location ^~, чтобы получить справочник. Его приоритет выше location /

server { 
    #... 

    location ^~ /wallfly-mvc/public/ { 
     if (!-e $request_filename) { 
      rewrite ^/wallfly-mvc/public/(.+)$ /wallfly-mvc/public/index.php?url=$1 break; 
     } 
    } 
} 
+0

'location/wallfly-mvc/public' имеет более высокий приоритет, чем' location/'- потому что'/wallfly-mvc/public' является самым длинным совпадением (см. Здесь: http://nginx.org/en/docs/http/ ngx_http_core_module.html # location) – uzsolt

+0

Да, моя ошибка. Поэтому мое решение ошибочно. и ему нужно переписать в 'location /' перед try_files – zywj

Смежные вопросы