我正在使用nginx,并希望将我的网址从page.php更改为page.html 我想要实现两件事,
由于nginx知识有限,请向我推荐脚本
答案 0 :(得分:3)
当有人说他们想要重写从A到B的URL时,他们通常意味着相反的方式。他们真正想要的是URL地址栏显示B,但实际访问A的现有内部资源。
根据您的问题,我认为您希望网址地址栏显示page.html
,但在内部提供page.php
资源。
我们假设您有混合内容,一些.html
和一些.php
,因此首先您可能希望删除任何带有内部重写的.html
扩展名,以便可以测试.html
和.php
文件名。 内部重写不会影响URL地址栏,但只是让服务器更容易在内部路由请求。
location ~* \.(html|php)$ {
rewrite ^(.*)\.(html|php)$ $1 last;
}
然后,根位置可以处理无扩展名的URI并测试.html
和.php
文件的存在以及您想要的任何其他内容。
location / {
try_files $uri $uri/ $uri.html @php;
}
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。