You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用.htaccess实现干净URL?博客页面URL重写需求

嘿,我来帮你搞定这个干净URL的问题!要把http://www.webiste.com/blog.php?title=how-to-make-dynamic-menu改成http://www.webiste.com/title/how-to-make-dynamic-menu,核心是用URL重写规则,下面分两种主流服务器环境给你详细步骤:

Apache服务器方案

Apache最常用的是通过.htaccess文件来配置重写规则,步骤如下:

  1. 确认mod_rewrite模块已启用
    首先要确保你的Apache服务器开启了mod_rewrite模块,大部分主机默认是开启的;如果没开,需要在httpd.conf里找到#LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的#号,然后重启Apache。

  2. 创建/编辑.htaccess文件
    在网站根目录(和blog.php同目录)创建或编辑.htaccess文件,添加以下代码:

    RewriteEngine On
    
    # 把旧的带参数URL永久重定向到干净URL(搜索引擎友好)
    RewriteCond %{QUERY_STRING} ^title=([^&]+)$
    RewriteRule ^blog\.php$ /title/%1? [R=301,L]
    
    # 把干净URL重写为实际的blog.php请求(仅服务器内部处理,用户看不到)
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^title/([^/]+)$ blog.php?title=$1 [L]
    
  3. PHP参数获取
    配置完重写后,你原来的PHP代码里$_GET['title']依然可以正常使用,不需要修改——重写规则已经把title/how-to-make-dynamic-menu里的内容传递给了blog.php的title参数。

Nginx服务器方案

如果你的服务器用的是Nginx,需要在站点配置文件里添加重写规则:

  1. 编辑Nginx站点配置
    找到你的站点配置文件(一般在/etc/nginx/sites-available/目录下),在server块内添加以下代码:

    # 处理干净URL的内部重写
    location /title/ {
        rewrite ^/title/([^/]+)$ /blog.php?title=$1 last;
    }
    
    # 旧URL永久重定向到干净URL
    location = /blog.php {
        if ($args ~* "^title=([^&]+)$") {
            set $title $1;
            return 301 /title/$title;
        }
    }
    
  2. 重启Nginx生效
    配置修改后,执行sudo systemctl restart nginx重启服务,规则就会生效。

额外注意事项

  • 301重定向的必要性:上面的规则都加了301永久重定向,这能告诉搜索引擎旧URL已永久迁移到新URL,不会影响你的SEO权重。
  • 权限与配置检查:Apache环境下要确保.htaccess文件权限为644,且服务器允许.htaccess覆盖配置(在httpd.conf里设置AllowOverride All)。

内容的提问来源于stack exchange,提问作者amarjeet singh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:25:19