2016-05-30 4 views
0

Я пытаюсь переписать мой Nginx использовать http://domain.com/main вместо использования http://domain.com/?page=mainRe-работа Apache .htaccess в Nginx конфигурацию

я сделал:

try_files $uri $uri/ /index.php?page=$uri; 

Возвращает пустую страницу

rewrite ^/(\w+)$ /index.php?page=$1 break; 
rewrite ^/(\w+)+\/$ /index.php?page=$1 break; 
if ($http_host !~ "^$"){ 
    rewrite ^(.*)$ http%1://www.$http_host$request_uri redirect; 
} 

Сгенерирует URL: http://domain.com/main/http://domain.com/main/http://domain.com/main

Вот Apac он .htaccess:

RewriteEngine on 
RewriteRule ^(\w+)$ index.php?page=$1 [L,NC,QSA] 
RewriteRule ^(\w+)+\/$ index.php?page=$1 [L,NC,QSA] 
RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{HTTPS}s ^on(s)| 
RewriteRule^http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+0

Могу ли я использовать удар? – swagster

ответ

0

Я предполагаю, что у вас есть рабочая конфигурация для URI, вида: http://domain.com/?page=main

try_files $uri $uri/ /index.php?page=$uri; не может работать, как ожидается, он будет генерировать:

http://domain.com/?page=/main 

Обратите внимание на дополнительные /. Поэтому вам может понадобиться использовать переписать для извлечения части URI, не считая ведущего /. Например:

location/{ 
    try_files $uri $uri/ @rewrite; 
} 
location @rewrite { 
    rewrite ^/(.*)$ /index.php?page=$1 last; 
} 
location \.php$ { ... } 

Обратите внимание на last суффикс, а не суффикс break, в качестве цели нужен URI, который нужно обрабатывать в другом месте. См. this document.

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