WordPress页面url总带有讨厌的“?i=1”,教你如何去掉这个讨厌的小尾巴 - 技术宅银魂 - 科技改变生活 - 万事屋 | 生活·动漫·娱乐综合社区-银魂同好聚集地

WordPress页面url总带有讨厌的“?i=1”,教你如何去掉这个讨厌的小尾巴

在 WordPress 中,.htaccess 文件用于设置伪静态规则(URL 重写),以确保前端 URL 干净且不带多余的查询参数(如 ?i=1)。默认情况下,WordPress 的伪静态规则已经能够生成简洁的 URL,但如果你发现 URL 中仍然出现了 ?i=1,可能是因为自定义配置或外部干扰导致的。下面是一个标准的 WordPress .htaccess 伪静态规则示例,确保前端 URL 不带 ?i=1 或其他不必要的参数。

先备份标准的WordPress .htaccess 伪静态规则:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
规则解释
  1. RewriteEngine On
    • 启用 Apache 的重写引擎。
  2. RewriteBase /
    • 设置重写的基础路径,通常为 WordPress 安装的根目录。
  3. RewriteRule ^index\.php$ – [L]
    • 如果请求是 index.php,直接处理,不进行后续重写([L] 表示停止规则处理)。
  4. RewriteCond %{REQUEST_FILENAME} !-f
    • 检查请求的文件是否真实存在(不是文件时继续执行)。
  5. RewriteCond %{REQUEST_FILENAME} !-d
    • 检查请求的目录是否真实存在(不是目录时继续执行)。
  6. RewriteRule . /index.php [L]
    • 将所有非真实文件或目录的请求重写到 index.php,由 WordPress 处理生成伪静态 URL。

确保 URL 不带 ?i=1 的额外步骤
 
如果默认规则仍无法移除 ?i=1,可能是因为某些插件、主题或外部重定向添加了该参数。你可以添加额外的重写规则来强制清理这种查询参数。以下是增强版 .htaccess:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

# 移除 URL 中的 ?i=1 参数
RewriteCond %{QUERY_STRING} ^i=1$
RewriteRule ^(.*)$ /$1? [R=301,L]

# 标准 WordPress 伪静态规则
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
增强规则解释
  • RewriteCond %{QUERY_STRING} ^i=1$
    • 检查 URL 的查询字符串是否为 i=1
  • RewriteRule ^(.*)$ /$1? [R=301,L]
    • 将带有 ?i=1 的 URL 重定向到不带参数的版本([R=301] 表示永久重定向,利于 SEO;? 清空查询字符串)。

使用前的注意事项
  1. 备份文件
    • 修改 .htaccess 前,请备份现有文件,避免出错无法恢复。
  2. 测试规则
    • 保存后,清空浏览器缓存,访问几个页面(如首页、文章页),确认 URL 是否干净,且网站功能正常。
  3. 检查固定链接设置
    • 在 WordPress 后台,进入 设置 -> 固定链接,选择你想要的结构(如“文章名”),点击“保存更改”,这会刷新 .htaccess 并确保与规则一致。
  4. 排除其他干扰
    • 如果问题仍未解决,检查是否有插件(如缓存插件)或服务器级别的重定向规则干扰 URL。

示例效果
  • 修改前https://example.com/post-name?i=1
  • 修改后https://example.com/post-name

如果问题持续存在
如果上述规则仍无法移除 ?i=1,可能是以下原因:
  • 服务器缓存:联系主机提供商清除服务器端缓存。
  • CDN 配置:检查 Cloudflare 等 CDN 是否添加了参数。
  • 代码问题:在主题的 functions.php 或插件中搜索是否有代码(如 add_query_arg(‘i’, ‘1’))手动添加了参数。
希望这个 .htaccess 配置能帮你成功清理 URL 中的小尾巴!如果需要进一步调试,请告诉我你的具体 URL 示例或网站环境,我可以提供更针对性的建议。
请登录后发表评论

    没有回复内容

万事屋新帖