2014-09-25 4 views
0

Ниже представлена ​​моя конфигурация для nginx.Nginx Redirect Loop

location/{ 
    try_files $uri $uri/ $uri.html $uri.php?$query_string; 

    # Remove trailing slash 
    rewrite ^/(.*)/$ /$1 permanent; 

    rewrite /authors/(.*) /authors/search.php?author=$1; 
} 

Проблема, которую я имею что когда я иду в www.mywebsite.com/authors это приводит к бесконечной переадресации. Я хочу, чтобы www.mywebsite.com/authors загружал www.mywebsite/authors/index.php и www.mywebsite.com/authors/EVERYOTHERSTRING, чтобы перейти к последней перезаписи. Как я могу добиться этого с помощью перезаписи?

Редактировать: И все еще удалены косые черты.

+0

'/authors/search.php автор = $ 1;?' Соответствует '/authors/(.*) '. Поэтому он переписывает себя бесконечно. – zerkms

+0

Нет, проблема не в этом. Я изменил '/authors/search.php? Author = $ 1;' на '/authorsTEMP/search.php? Author = $ 1;' и ошибка все еще произошла. Это имеет какое-то отношение к завершающей косой чертой, потому что ошибка переадресации прекращается, когда я удаляю ее. – user1106340

ответ

1

Попробуйте изменить эти правила перезаписи ...

rewrite ^/(.*)/$ /$1 permanent; 
rewrite /authors/(.*) /authors/search.php?author=$1; 

к ...

rewrite ^/authors/(.*) /authors/search.php?author=$1 last; 
rewrite ^/(.+)/$ /$1 permanent;