Когда кто-то утверждает, что они хотят переписать 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.