2016-07-21 2 views
0

Моего оригинального URL являются как следующим:Nginx - Перепишите используя последний сегмент URL

http://example.com/lab/file.php?id=4&idl=42 

Я хочу, чтобы украсить его, что делает его также доступен через URL, как следующие:

http://example.com/l/not/important/url/part/?id=4&idl=42 

Я попытался с следующий код, но он не работает.

rewrite /l/.*/([^/]+)/?$ /lab/file.php$1 last; 

Как решить?

ответ

1

Все, что после ? является строкой запроса и не может быть переписано с использованием директивы rewrite. Однако по умолчанию rewrite будет добавлять исходную строку запроса в любом случае.

Вы можете переписать любой URI, который начинается с /l/ или создать место для /l/, например:

rewrite ^/l/ /lab/file.php last; 

или:

location ^~ /l/ { 
    rewrite^/lab/file.php last; 
} 

Модификатор ^~ делает этот префикс расположение имеют приоритет над regex на том же уровне. См. this document.

В обоих случаях rewrite добавит исходную строку запроса в перезаписанный URI. См. this document.

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