Web 服务器隐藏 PHP 后缀

Nginx, Apache, httpd

Snipaste_2020-05-23_13-27-37.png

假设我们有如下网页地址

http://www.example.com/index.html
http://www.example.com/index.php

如果希望隐藏 .html.php 后缀, 使其变为以下形式

http://www.example.com/index
http://www.example.com/index

可以根据服务器类型 (Apache 或 Nginx) 使用不同的方法实现

Apache

  1. 隐藏 .html 后缀

    .htaccess 文件中添加以下规则

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^\.]+)$ $1.html [NC,L]
    
  2. 隐藏 .php 后缀

    .htaccess 文件中添加以下规则

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^([^\.]+)$ $1.php [NC,L]
    

Nginx

方法一: 使用 try_files

在 nginx 配置文件中, 添加以下代码到对应的 server 配置块

location / {
    try_files $uri $uri/ $uri.php$is_args$args;
}

方法二: 使用 if 判断

  1. 隐藏 .html 后缀

    在 nginx 配置文件中, 添加以下规则

    if (!-f $request_filename) {
        set $rule_0 1$rule_0;
    }
    if ($rule_0 = "1") {
        rewrite ^/([^\.]+)$ /$1.html last;
    }
    
  2. 隐藏 .php 后缀

    在 nginx 配置文件中, 添加以下规则

    if (!-f $request_filename) {
        set $rule_0 1$rule_0;
    }
    if ($rule_0 = "1") {
        rewrite ^/([^\.]+)$ /$1.php last;
    }
    

原文

利用.htaccess隐藏html和php后缀
Apache (httpd) 伪静态设置
nginx一招配置,帮你快速隐藏php后缀名

最后更新于 2020-05-23
使用 Hugo 构建
主题 StackJimmy 设计