• php实战案例记录(6)伪静态设置


    PHP伪静态设置是指通过配置服务器或使用PHP代码来实现将动态网页的URL转换为静态网页的URL形式的技术。这种技术可以提高网页的访问速度和搜索引擎的友好性。

    在PHP中,实现伪静态设置的方法主要有两种:

    1. 使用Apache服务器的Rewrite模块和.htaccess文件:通过在.htaccess文件中添加Rewrite规则,将动态网页的URL重写为静态网页的URL形式。例如,可以将带有查询参数的URL重写为不带查询参数的URL。
    2. 使用PHP代码实现:通过在PHP文件中使用$_SERVER[‘REQUEST_URI’]等全局变量获取当前URL,然后使用字符串处理函数和正则表达式等技术将动态URL转换为静态URL。例如,可以使用str_replace()函数将查询参数替换为静态URL的一部分。

    无论使用哪种方法,PHP伪静态设置的目的都是将动态网页的URL转换为静态网页的URL形式,以提高网页的访问速度和搜索引擎的友好性。同时,也需要注意在实现伪静态设置时,应该保留原始URL的功能,并确保新生成的静态URL与原始URL对应的内容一致。

    Apache服务器的Rewrite模块和.htaccess文件

    在PHP中,实现伪静态设置的主要方法是使用Apache服务器的Rewrite模块和.htaccess文件。以下是一个简单的示例,演示如何设置伪静态规则:

    1. 确保你的服务器已经启用了Rewrite模块。你可以通过在PHP文件中使用phpinfo()函数来检查。
    2. 在你的项目根目录下创建一个名为.htaccess的文件(如果已经存在,请直接编辑它)。
    3. .htaccess文件中添加以下规则:
    
        RewriteEngine On
        RewriteBase /your-project-directory/
    
        # 将 index.php?page=1 重写为 /page/1
        RewriteRule ^page/([0-9]+)/?$ index.php?page=$1 [L,QSA]
    
        # 将 index.php?category=books 重写为 /category/books
        RewriteRule ^category/([^/]+)/?$ index.php?category=$1 [L,QSA]
    
        # 将 index.php?product=123 重写为 /product/123
        RewriteRule ^product/([0-9]+)/?$ index.php?product=$1 [L,QSA]
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    在上面的示例中,我们使用了三个规则来重写URL。你可以根据你的实际需求修改和添加规则。这里的规则是将index.php文件后的查询参数重写为伪静态的URL形式。

    1. 保存并上传.htaccess文件到你的服务器。现在,当你访问类似/page/1/category/books/product/123的URL时,它们将被重写为相应的查询参数形式,并由index.php文件处理。

    请注意,伪静态设置的具体规则取决于网站结构和需求,确保服务器允许使用.htaccess文件进行重写操作,并且Apache服务器的Rewrite模块已启用。

    nginx配置伪静态

    手动添加规则

    location / {  
        if (!-e $request_filename) {  
            rewrite ^/(.*)$ /index.php?s=$1 last;  
            break;  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在上面的示例代码中,if (!-e $request_filename)用于判断请求的文件是否存在,如果不存在则执行rewrite指令,将URL重写为/index.php?s=$1的形式。last标志表示重写后的URL将继续被Nginx处理,break标志则表示重写后的URL将直接返回给客户端。

    完整规则示例(DiscuzX3)

    location / {
    	rewrite ^([^\.]*)/topic-(.+)\.html$ $1/portal.php?mod=topic&topic=$2 last;
    	rewrite ^([^\.]*)/article-([0-9]+)-([0-9]+)\.html$ $1/portal.php?mod=view&aid=$2&page=$3 last;
    	rewrite ^([^\.]*)/forum-(\w+)-([0-9]+)\.html$ $1/forum.php?mod=forumdisplay&fid=$2&page=$3 last;
    	rewrite ^([^\.]*)/thread-([0-9]+)-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=viewthread&tid=$2&extra=page%3D$4&page=$3 last;
    	rewrite ^([^\.]*)/group-([0-9]+)-([0-9]+)\.html$ $1/forum.php?mod=group&fid=$2&page=$3 last;
    	rewrite ^([^\.]*)/space-(username|uid)-(.+)\.html$ $1/home.php?mod=space&$2=$3 last;
    	rewrite ^([^\.]*)/blog-([0-9]+)-([0-9]+)\.html$ $1/home.php?mod=space&uid=$2&do=blog&id=$3 last;
    	rewrite ^([^\.]*)/(fid|tid)-([0-9]+)\.html$ $1/index.php?action=$2&value=$3 last;
    	rewrite ^([^\.]*)/([a-z]+[a-z0-9_]*)-([a-z0-9_\-]+)\.html$ $1/plugin.php?id=$2:$3 last;
    	if (!-e $request_filename) {
    			return 404;
    	}
    }
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    @漏刻有时

  • 相关阅读:
    [附源码]Python计算机毕业设计java高校社团管理系统
    前端一面经典react面试题(边面边更)
    详解API基础知识
    【AIFEM案例操作】水轮机转轮强度和模态分析
    Kafka偏移量自动提交设置
    沸点 | Ultipa 图数据库金融应用场景优秀案例首批入选,金融街论坛年会发布
    【漏洞复现】通达OA share身份认证绕过漏洞
    抖音小店无货源,关于疫情原因,影响地区发货和地区服务调整
    蚂蚁集团、浙江大学联合发布开源大模型知识抽取框架OneKE
    MMDeploy理解
  • 原文地址:https://blog.csdn.net/weixin_41290949/article/details/133486244