当前位置: 首页 > news >正文

伪静态怎么设置(详细教程)

一、什么是伪静态?为什么要用它?

  • 动态URL示例: https://www.ygwzjs.cn/article.php?id=123&category=news

    • 难看,参数多,不利于SEO和分享。

  • 对应的伪静态URL示例: https://www.hybiaobai.cn/article/123/news.html

    • 简洁、有层次感,看起来像一个静态页面,搜索引擎和用户都喜欢。

核心原理: 当用户访问 article/123/news.html 时,服务器(通过规则)在内部将这个请求“重写”为 article.php?id=123&category=news 来处理,然后返回结果给用户。用户浏览器地址栏显示的依然是那个简洁的URL。


二、设置伪静态的前提条件

  1. 服务器支持 URL 重写模块:

    • Apache服务器: 需要开启 mod_rewrite 模块。绝大多数虚拟主机都默认开启。

    • Nginx服务器: 默认支持强大的 rewrite 功能,但配置方式与Apache不同。

    • IIS服务器: 需要安装并配置 URL Rewrite 模块。

  2. 网站程序支持: 您的网站程序(如 WordPress, Discuz!, ThinkPHP 等)必须支持路由功能,即能够解析伪静态后的URL。现代主流程序都支持。

  3. 权限: 您需要能修改服务器配置文件(拥有服务器 root 权限)或者在网站根目录下创建/修改 .htaccess 文件(虚拟主机用户常用)。


三、详细设置步骤(分服务器类型)

我们将重点讲解最常用的 Apache 和 Nginx 的设置方法。

方法一:Apache 服务器设置伪静态(最常见)

Apache主要通过根目录下的 .htaccess 文件来配置。

步骤 1:开启 mod_rewrite 模块

  • 如果是自己的VPS或服务器,需要确保 httpd.conf 文件中有这行,且没有被注释掉(前面没有#):

    apache

    LoadModule rewrite_module modules/mod_rewrite.so
  • 同时,在对应的 <Directory> 配置段中,将 AllowOverride 设置为 All,这样才能允许 .htaccess 文件生效。

    apache

    <Directory "/var/www/html">Options Indexes FollowSymLinksAllowOverride All # 这里很重要,必须是 AllRequire all granted
    </Directory>
  • 修改后,重启 Apache 服务

  • 对于虚拟主机用户: 通常服务商已经配置好了,您无需进行此步,直接进行下一步。

步骤 2:创建 .htaccess 文件

  1. 在您网站的根目录下(例如 wwwroot 或 htdocs),创建一个名为 .htaccess 的文件。注意文件名开头有个点。

  2. 如果无法直接创建,可以先创建一个 htaccess.txt 文件,上传到服务器后通过FTP工具重命名为 .htaccess

步骤 3:编写重写规则

这是最关键的一步。规则因程序而异。.htaccess 文件的基本结构如下:

apache

<IfModule mod_rewrite.c>RewriteEngine On  # 开启重写引擎RewriteBase /     # 设置重写基准目录,如果网站在根目录就是 /# 这里开始写具体的重写规则# 规则语法:RewriteRule 模式 替换 [标志]# 示例规则 1:将 article/123.html 重写为 article.php?id=123RewriteRule ^article/([0-9]+)\.html$ article.php?id=$1 [L]# 示例规则 2:隐藏URL中的 .php 扩展名# 访问 /about 会实际执行 /about.phpRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_FILENAME}\.php -fRewriteRule ^(.*)$ $1.php [L]# 以下是 WordPress 的经典规则:RewriteRule ^index\.php$ - [L]RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteRule . /index.php [L]
</IfModule>

规则解释:

  • RewriteRule ^article/([0-9]+)\.html$ article.php?id=$1 [L]

    • ^article/([0-9]+)\.html$ 是正则表达式,匹配以 article/ 开头,后面是数字([0-9]+),并以 .html 结尾的URL。括号 () 表示捕获这部分内容。

    • article.php?id=$1 是实际要执行的动态URL。$1 代表前面规则中第一个括号捕获的内容。

    • [L] 是标志,表示如果这条规则匹配,就停止处理后续规则。

  • RewriteCond 是重写条件,用于判断。

    • !-f 表示“不是已存在的文件”。

    • !-d 表示“不是已存在的目录”。

最佳实践: 您通常不需要自己编写规则。您使用的网站程序(如 WordPress、Discuz! 等)的官方文档或后台设置中都会提供标准的 .htaccess 规则,直接复制粘贴即可。

步骤 4:测试
保存 .htaccess 文件后,在浏览器中访问您设置好的伪静态链接,如 https://您的网站/article/123.html,看是否能正常显示内容。


方法二:Nginx 服务器设置伪静态

Nginx 的配置不通过 .htaccess 文件,而是直接在服务器的配置文件中修改(通常是 nginx.conf 或 vhost 目录下您的网站对应的 .conf 文件)。

步骤 1:编辑配置文件

  1. 使用SSH连接到您的服务器。

  2. 找到您的网站Nginx配置文件,位置可能因安装方式而异,例如 /etc/nginx/conf.d/your_site.conf 或 /etc/nginx/sites-available/your_site

  3. 使用 sudo 和文本编辑器(如 vim 或 nano)进行编辑。

步骤 2:在 server { } 块中编写重写规则

规则写在 location / { ... } 块内。

nginx

server {listen 80;server_name hywushu.cn;root /path/to/your/website;index index.html index.php;location / {# 开启重写功能try_files $uri $uri/ /index.php?$args; # 这是 WordPress 等程序常用的一个万能规则# 或者使用 rewrite 指令自定义规则# 示例:将 article/123.html 重写为 article.php?id=123rewrite ^/article/([0-9]+)\.html$ /article.php?id=$1 last;}# 处理 PHP 文件的配置location ~ \.php$ {include fastcgi_params;fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # 根据你的PHP版本修改fastcgi_index index.php;fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;}
}

规则解释:

  • rewrite ^/article/([0-9]+)\.html$ /article.php?id=$1 last;

    • 语法与Apache类似。^/article/([0-9]+)\.html$ 是匹配模式,/article.php?id=$1 是重写目标。

    • last 标志相当于Apache的 [L],表示完成当前重写后停止,并用重写后的URI重新搜索location。

步骤 3:检查配置并重载Nginx

修改保存后,至关重要的一步是检查配置文件语法是否正确。

  1. 运行测试命令:sudo nginx -t

  2. 如果显示 syntax is ok 和 test is successful,则说明配置正确。

  3. 重载Nginx使配置生效:sudo systemctl reload nginx

步骤 4:测试
同样,在浏览器中访问伪静态链接进行测试。


四、常见程序的伪静态规则

  • WordPress:

    • Apache(.htaccess): 在WP后台“设置”->“固定链接”中,选择除了“朴素”以外的任何结构,WP会自动在网站根目录生成或更新 .htaccess 文件。

    • Nginx: 常用规则是 try_files $uri $uri/ /index.php?$args;

  • Discuz! X:

    • 后台“全局”->“SEO设置”->“URL静态化”中,勾选需要静态化的页面,并选择您的服务器类型(Apache/Nginx),系统会直接给出对应的规则,复制到相应位置即可。

  • ThinkPHP:

    • 框架自带路由功能。对于Apache,通常需要以下规则:

      apache

      RewriteRule ^(.*)$ index.php?$1 [QSA,PT,L]
    • 对于Nginx,通常需要:

      nginx

      location / {if (!-e $request_filename){rewrite ^(.*)$ /index.php?s=$1 last;}
      }

总结与注意事项

  1. 备份!备份!备份! 在修改服务器配置文件或 .htaccess 文件前,务必备份原文件。

  2. 先测试规则: 可以使用在线正则表达式工具测试你写的规则是否能正确匹配。

  3. 分清服务器类型: Apache用 .htaccess,Nginx用配置文件,规则语法不同,切勿混用

  4. 清除浏览器缓存: 修改规则后,测试时最好使用浏览器无痕模式或强制刷新(Ctrl+F5),避免缓存干扰。

  5. 查看错误日志: 如果出现500等错误,第一时间查看服务器的错误日志(Apache的 error_log 或 Nginx的 error.log),里面会有详细的错误信息,对排查问题至关重要。

http://www.dtcms.com/a/410626.html

相关文章:

  • 【leetcode】57. 插入区间
  • 多sheet excel 导出
  • 手机移动端网站是什么用什么软件做网站布局
  • cesium-kit:让 Cesium 开发像写 UI 组件一样简单
  • 电子工程师网站wordpress the ken
  • Nginx HTTPS 深入实战 配置、性能与排查全流程(Nginx https
  • 网站建设和优化的营销话术亚马逊雨林生存游戏手机下载
  • 一场“无感换心”手术:金仓数据库如何让电子证照系统平滑告别MongoDB
  • 【开源】基于STM32的新疆地区棉花智能种植系统
  • 高平市规建设局网站短链接生成器
  • 解决SSL握手失败问题:SSLHandshakeException: Received fatal alert: handshake_failure
  • 降级版本Pillow解决freetypefont has no attribute getsize问题
  • 网站设计实例教程wordpress引用文章
  • 基于蜣螂优化的LSTM深度学习网络模型(DBO-LSTM)的一维时间序列预测算法matlab仿真
  • 改进的遗传算法优化的BP神经网络用于电厂数据的异常检测和故障诊断
  • 有什么公司要做推广的网站推广优化软件
  • visual studio 2019配置qt程序
  • 漏标(Missing Mark)问题深度解析
  • OpenAI近日推出了一项名为 ChatGPT Pulse 的全新功能
  • 购物网站后台设计wordpress怎么设置404页面跳转
  • 销售网站免费做珠海品牌型网站建设
  • Lucene 8.7.0 版本中dvd、dvm文件详解
  • Ubuntu 系统上安装 jdk-23_linux-x64_bin.tar.gz
  • o2o网站制作公司广告设计与制作标书
  • 苏州网站推广建设安全达标建设网站
  • 丙烯酸胶粘剂怎么选?先避 3 个坑,再挑靠谱品牌
  • Solidworks练习13-拉伸、拉伸切、筋
  • LeetCode算法日记 - Day 54: 二叉树的所有路径、全排列
  • 人脸模型训练-推理完整过程附代码
  • 洛阳网站排名福州网站建设H5