赞
踩
可以通过以下配置实现此功能:
复制- server {
- listen 80;
- server_name example.com;
- root /var/www/example.com;
-
- index index.html;
-
- location / {
- try_files $uri $uri/ @index;
- }
-
- location @index {
- if (-f $document_root/index.html) {
- return 200;
- }
- rewrite ^ /index.html last;
- }
- }
上面的配置中,try_files
指令会先尝试访问与请求路径相同的文件,如果文件不存在则尝试访问对应的目录下的index.html
文件。
如果try_files
无法找到对应的文件,则会执行重写规则,将请求路径重写为index.html
,然后返回200状态码。
注意,使用if指令会影响性能,因此应该尽量避免使用。在上面的配置中,我们使用if指令来判断index.html
文件是否存在。如果存在,则直接返回200状态码,否则才执行重写规则。
在nginx中,可以使用try_files
指令来实现伪静态判断html是否存在,如果不存在则访问php。
具体配置如下:
复制- location / {
- try_files $uri.html $uri $uri/ @php;
- }
-
- location @php {
- # 将请求转发给php-fpm处理
- fastcgi_pass unix:/var/run/php-fpm.sock;
- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
- include fastcgi_params;
- }
解释一下上面的配置:
try_files $uri.html $uri $uri/ @php;
:先尝试访问与请求路径同名的html文件,若存在则直接返回;如果不存在,则尝试访问请求路径(即不带后缀的原始路径),若存在则直接返回;如果还是不存在,则尝试访问以请求路径为目录的index文件(如/test/
会尝试访问/test/index.html
或/test/index.php
),若存在则直接返回;最后,如果还是未找到对应文件,则将请求转发给@php对应的location处理。location @php { ... }
:当上面的try_files未找到对应文件时,请求会被转发到这个location处理,并将请求转发给php-fpm处理。通过上述配置,可以实现nginx伪静态判断html是否存在,如果不存在则访问php。
点击复制后,将打开C知道体验页
|
wordpress,伪静态先使用try_files 判断html是否存在,如果不存在则访问index.php
点击复制后,将打开C知道体验页
是的,这是一种常见的实现方式。在 Nginx 的配置中,可以使用 try_files 指令来判断请求的文件是否存在,如果不存在则将请求交给 index.php 处理。具体的配置如下:
复制- location / {
- try_files $uri $uri/ /index.php?$args;
- }
其中,$uri 表示当前请求的 URI,$uri/ 表示当前请求的 URI 加上一个斜杠,/index.php?$args 表示将请求交给 index.php 处理,并将原始的查询参数传递给 index.php。
这样的配置可以实现 WordPress 的伪静态功能,即将请求转换为类似于 /post/123 的 URL 形式,并通过 index.php 处理这些请求。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。