2016-01-15 2 views
0

Я использую с помощью Nginx и хочет изменить свой адрес от page.php до page.html есть две вещи, которые я хочу достичь,переписать расширение файла из page.php в page.html в Nginx

  1. Изменить URL-адрес домена domain.com/page.php -> domain.com/page.html
  2. Ячейка привязки на моей странице - domain.com/page.html, но фактическая страница - page.php. Я хочу, чтобы это работало без изменения привязанного тега.
  3. У меня есть URL, как domain.com/page.php?get=value это должно быть как domain.com/value

Из-за ограниченного знания в Nginx, пожалуйста, предложите мне сценарий

ответ

2

Когда кто-то утверждает, что они хотят переписать URL-адрес от A до B, они часто означают наоборот. То, что они действительно хотят, это указать адресную строку URL для отображения B, но фактически получить доступ к существующему внутреннему ресурсу в A.

С вашего вопроса, я думаю, что вы хотите, чтобы адресная строка URL отображала page.html, но внутренне ресурс page.php служил.

Давайте предположим, что вы перепутали содержание, некоторые .html и некоторые .php, поэтому сначала вы можете захотеть, чтобы удалить .html расширение с внутренней переписывание так, что оба .html и .php имена файлов могут быть проверены. Внутренний переписчик - это тот, который не будет влиять на адресную строку URL-адреса, но просто упрощает сервер для внутреннего маршрута запроса.

location ~* \.(html|php)$ { 
    rewrite ^(.*)\.(html|php)$ $1 last; 
} 

корневой каталог может обработать расширение менее URIs и тест на наличие .html и .php файлов, а все остальное вам фантазии.

location/{ 
    try_files $uri $uri/ $uri.html @php; 
} 

РНР файлы выгружены в именованный месте, которое содержит код, чтобы отправить запрос на входе в интерпретатор PHP:

location @php { 
    try_files $uri.php /page.php?get=$uri; 

    include  fastcgi_params; 
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; 
    fastcgi_pass ...; 
} 

Все вышеперечисленные nginx директив documented here.

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