从 url 中删除“index.html”并使用单个 301 重定向添加“www”

2023-12-12

为了去除index.html or index.htm从网址我在我的中使用以下内容.htaccess

RewriteCond %{REQUEST_URI} /index\.html?$ [NC]
RewriteRule ^(.*)index\.html?$ "/$1" [NC,R=301,NE,L]

这有效!(有关此问题末尾的标志的更多信息*)

然后为了添加www在网址中我使用以下内容.htaccess

RewriteCond %{HTTP_HOST} !^www\.mydomain\.com$ [NC]
RewriteRule ^(.*)$ "http://www.mydomain.com/$1" [R=301,NE,L]

这也有效!

这里的问题是在如下情况下,如何避免上述规则创建的双重重定向:

  1. 浏览器要求http://mydomain.com/path/index.html
  2. 服务器发送301将浏览器重定向到的标头http://mydomain.com/path/
  3. 然后浏览器请求http://mydomain.com/path/
  4. now the 服务器发送301将浏览器重定向到的标头http://www.mydomain.com/path/

这显然不是很聪明,因为一个可怜的用户在问http://mydomain.com/path/index.html会被双重重定向,他会觉得页面速度太慢。此外,Googlebot 可能会停止跟踪双重重定向的链接原因(我不确定最后一个,我不想对此进行讨论,这只是另一个可能的问题。)

Thanks!


*可能对谁感兴趣:

  • NC也用于重定向 大写文件,即INDEX.HTML / InDeX.HtM
  • NE用来 为了避免双重 url 编码,我避免http://.../index.html?hello=ba%20be被重定向到http://.../index.html?hello=ba%2520be
  • QSA用于重定向 也查询,即http://.../index.html?hello=babe to http://.../?hello=babe (不需要,因为阿努巴瓦答案)

为了避免双重重定向,.htaccess 文件中还有另一个满足这两个条件的规则,如下所示:

Options +FollowSymlinks -MultiViews
RewriteEngine on

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ [NC]
RewriteRule . http://www.%{HTTP_HOST}%1 [R=301,NE,L]

RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule . http://www.%{HTTP_HOST}%{REQUEST_URI} [NE,R=301,L]

RewriteCond %{REQUEST_URI} ^(.*/)index\.html$ [NC]
RewriteRule . %1 [R=301,NE,L]

所以如果输入 URL 是http://mydomain.com/path/index.html那么这里的第一个规则中的两个条件都得到满足,并且将有 1 个单个重定向 (301) 到http://www.mydomain.com/path/.

我也相信QSA上面并不真正需要标志,因为你是NOT操纵查询字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 url 中删除“index.html”并使用单个 301 重定向添加“www” 的相关文章

  • 正则表达式查找 bcrypt 哈希值?

    我正在寻找使用正则表达式 在 PowerGrep 中 在数据库中查找 bcrypt 哈希字符串 尝试了这个正则表达式 A Za z 0 9 60 但没有找到匹配项 Bcrypt 哈希长度为 60 个字符 以 2y 开头 Example 2y
  • 在 R 中分割并提取字符串的一部分(在“.”和数字之间)

    我有一个字符变量 companies 观察结果如下 612 Grt Am Mgt Inv 7 33 77 威克斯4 61 265 王实验室8 75 9 CrossLand 节省 6 32 228 JPS纺织集团2 00 我试图将这些字符串分
  • 一位或两位数字正则表达式

    我有下面的代码 仅当我有 2 位数字时它才有效 如果我有 1 位数字则不起作用 我想在两种情况下工作 一位或两位数 var numberRegex 1 9 0 9 我尝试过类似的方法 但不幸的是不起作用 var numberRegex 1
  • 匹配除字符串列表之外的所有内容的正则表达式

    我需要匹配计划标识符的正则表达式 如果它找到任何不允许的字符串 该标识符将终止 我有这样的代码 function make tokens re var tokens specials names sort a b gt b length a
  • 转义 re.sub 的 repl 参数

    我想确定repl的论证re sub是转义 因此任何特殊序列如 1不被解释 gt gt gt repl r 1 gt gt gt re sub X repl X X gt gt gt re sub X desired escape funct
  • 用数组值替换字符串中的模板

    我有一个字符串 可以有简单的模板 我有一个包含替换值的数组 目前我正在用循环来做 但我想把它改成preg replace 你能帮助我吗 Example values array id gt 120 name gt Jim string He
  • 在Python中检测包含非英文字符的字符串

    我有一些混合有英文字母和非英文字母的字符串 例如 w 1991 2 如何使用正则表达式或 Python 中的任何其他快速方法识别这些类型的字符串 我不喜欢将字符串中的字母与字母列表进行逐一比较 而是一次性快速完成此操作 您可以检查该字符串是
  • 为什么 Javascript 不支持lookbehind断言?

    最近我意识到 因有些尴尬 正则表达式lookbehind assertions were not可能在Javascript 这种看似常见的断言不存在的 事实 原因是什么 我意识到也许有其他方法可以实现同样的目标 https stackove
  • 使用正则表达式检查至少 8 位数字的字符串

    我的正则表达式如下 d s 12 这将允许数字 空格 但我想确保字符串至少包含 8 位数字 一些允许的字符串如下 1323 24 233 24243434 43 43435 4554345 434 它不应该允许这样的字符串 1213 232
  • 使用正则表达式检查字符串是否以数字字符开头和结尾

    我想 String string 123456 if string startsWith 0 9 string endsWith 0 9 code And the if子句永远不会被调用 不要使用正则表达式 Character isDigi
  • JavaScript 解析 bbcode url

    我已经尝试解析 JavaScript 中的 bbcode URL 标签有一段时间了 例如 url http examp le linktext url 应该成为 a href http examp le linktext a 我对此做了很多
  • sed:用匹配的模式替换第 n 个单词?

    我有一个具有以下特征的文本文件 每行至少有三个由空格分隔的 单词 单词 可以是任何字符或字符串 我在一些行中附加了一些注释 并提出了对原始单词进行更改的初步建议 现在想使用 sed 为我进行这些更改 因此 为了提供更清晰的图片 我的文件如下
  • 如何去掉所有标签并得到纯文本?

    我必须将用户输入文本存储在我的数据库中HTML and CSS格式 案例是 Rad编辑器 http www telerik com products aspnet ajax editor aspx 用户将文本从 MSWord 复制到此编辑器
  • 将匹配的值传递给函数,并替换为返回值

    我如何让 Bash 匹配正则表达式 而不是用常量字符串替换值 而是将匹配的值传递给函数 然后从函数的返回值中获取要替换的值 像下面的伪代码一样 它替换了每一个匹配项 a d 具有相同的字符 但大写 function uppercase ec
  • 在 SQL 中查询行序列

    假设我正在存储events有关联users如下表 其中dt代表事件的时间戳 dt user event 1 1 A 2 1 D 3 1 B 4 1 C 5 1 B 6 2 B 7 2 B 8 2 A 9 2 A 10 2 C 这样我们就可以
  • PHP正则表达式在wordpress短代码标签之间替换

    我有一个短代码 我希望能够根据帖子的上下文将其删除 例如 tooltip slug test Test Text tooltip 我希望输出是 span class dummy Test Text span 我已经用 preg replac
  • 在动作之间传递对象数据

    我一开始遇到了一个关于我的一个jsp上的列表 下拉列表的问题 但现在我意识到我的主要问题是关于操作 页面之间的数据输入 老问题 https stackoverflow com questions 26871659 redirecting t
  • 使用正则表达式验证输入字符串是否为 0-255 之间的数字

    我在将输入字符串与正则表达式匹配时遇到问题 我想验证输入数字在 0 255 之间并且长度最多应为 3 个字符 代码工作正常 但当我输入 000000 至任意长度时 显示 true 而不是 false 这是我的代码 String IP 000
  • 如何仅替换多个文件中记事本++中的第一个文本实例?

    我正在努力更新一个网站并进行一些更改 并且我已经成功使用标准查找和替换搜索对多个文件进行了大部分更改 我的 f r 中只留下一个错误需要修复 但它在整个文档中出现了几次 我只想替换第一个实例 这是唯一一次错误 div class boxb
  • Excel VBA 自动过滤子字符串

    我的 Excel 中有多行 其中 D 列为 TDM 02 Bundle Rehoming 5 NE TDM 02 Bundle Rehoming 23 NE IP 02 Bundle Rehoming 7 NE 等 请注意 大多数情况下 N

随机推荐

  • PackageInfo LoadLabel 性能缓慢

    我正在为 Android 编写一个应用程序 其中获取应用程序的标签 实际名称 非常慢 特别是这段代码的性能非常糟糕 packageInfo loadLabel pm 只是为了给您一些指标 在安装了 400 个应用程序的 Android 设备
  • NES(6502组装)精灵动作

    我目前正在开发 NES 6502 组装游戏 但我不明白如何使精灵移动 我认为它应该是这样工作的 loop LDA 200 will load into the A register the content of address 200 wi
  • IntelliJ:使用 docker jvm 还是 docker maven?

    我有一个 docker jvm 实例 我从命令行使用它来编译和运行 java 代码 IntelliJ 的项目配置要求我指向文件系统上的 jvm 所以 我想知道 我可以配置intellij来使用这个docker容器吗 我想我可以配置一个 do
  • Socket.io 客户端:用一个处理程序响应所有事件?

    是否可以让 socket io 客户端响应所有事件 而无需单独指定每个事件 例如 像这样的东西 显然现在不起作用 var socket io connect http myserver socket on function listen t
  • 为什么 C++ 中析构函数运行两次?

    在做编程作业时 我似乎在基本的 C 概念上遇到了困难 我在程序中发现了该错误 这是由于我的析构函数运行次数超出了我的预期造成的 这是一个代码示例 演示了我做错了什么 直到最基本的部分 include
  • 添加/提交文件到所有分支

    假设我在一个分支上并且索引是脏的 我对文件 x 进行了更改 并且还进行了一些其他更改 有没有办法将文件 x 添加到所有现有分支 像这样的东西 usr bin env bash current branch git rev parse abb
  • 复杂的 git rebase 操作

    看着git rebase手册页 我没有看到任何看起来像我想要的图表 除了有些图表似乎做了与我想要的相反的事情 并且玩弄 onto也没有得到我想要的 让我看看是否可以画出像图中那样的图表git rebase手册页 左侧的竖线是为了使 Mark
  • 如何使用 python 访问 Azure AD 组和用户详细信息?

    params urllib urlencode Specify values for the following required parameters api version 1 5 tenant id vvvvvvvvXXXXXX he
  • Java 中的调度异常

    我正在开发一个任务 需要从给定的 URL 下载文件 其中一个要求是它可以处理网络故障和异常 在我的实现中 我有一个 DonwloadManager 为每个 URL 分配一个线程 以免阻塞 问题是我不确定如何通过代码模拟失败和异常 我尝试使用
  • 如何为 Cydia 和越狱的 iPhone 开发应用程序

    我开始为 iPhone 开发应用程序 我想开发一个特定的应用程序 但苹果肯定会拒绝它 所以我想为 Cydia 开发它 因为我认为它很有用 我试图弄清楚如何使用 Theos 和 XCode 来创建我的应用程序 但我什么都不懂 如果你们中的一些
  • Rails 基于对象的权限/授权引擎?

    我想在我的应用程序中添加 共享文档 功能 就像在谷歌文档服务中一样 据我所知 用户可以 可以列出 查看 创建 编辑 删除自己的文档 与所有人共享自己的文档 它是公共文档 将自己的文档共享给具有只读访问权限的其他用户 将自己的文档共享给具有读
  • 如何从 JSON 对象中删除包装器?

    我有一个带有包装器的 JSON 对象 其中包含有关它来自的服务的信息 在解析我真正关心的对象之前 我想去掉包装器 然后只解析该对象 我如何转换这个 JSON 对象 object id object 1 description Black o
  • 有没有API可以同时获取后置和前置摄像头视图? [复制]

    这个问题在这里已经有答案了 我需要在一个显示器上显示后置摄像头和前置摄像头 是否可以同时显示两者 有没有可以同时获取两个视图的API 与单相机相同 只是双相机 两个 SurfaceHolder 和两个 Camera 实例 http deve
  • TLS 扩展“服务器名称指示”(SNI):值在服务器端不可用

    基于 JSSE 示例 我尝试在服务器端获取 TLS 参数 服务器名称指示 SNI 的值 但没有成功 我确信该值是由客户端发送的 因为我使用了显示该值的网络嗅探器 Wireshark 但是当我使用以下代码片段时 服务器名称参数列表为空 同时显
  • 在令牌后触发的 jQuery 自动完成插件

    我正在构建一个应用程序 并且希望在文本区域内进行自动完成 就像 Twitter Facebook 使用 name 所做的那样 但是 我希望在输入 TID x 时触发它 其中 x 是任意长度的整数 看来 Twitter Facebook 在您
  • Google 电子表格 CTRL+Shift+E

    我有两张纸的电子表格 current sheet and archive sheet 我还有一个脚本 我创建的 可以从中删除数据current sheet并将其附加到archive sheet每月一次 The sheets have an
  • 使用FutureBuilder时如何只获取一次数据?

    我有一个获取请求 我将其作为未来传递给 FutureBuilder FutureBuilder future gettask builder context snapshot if snapshot hasData Stopwatch st
  • 如何解决 Mvc 中没有为此对象定义无参数构造函数错误?

    我正在创建一个演示应用程序来学习如何使用存储库模式来执行插入操作 我正在使用 Nop Commerce http www nopcommerce com 存储库模式的代码 Error 没有为此对象定义无参数构造函数 我看过这个链接 MVC
  • 哪个应该首先运行 git submodule update 或 git submodule init ?

    我在这里看到 https github com UCSD PL proverbot9001 issues 73 run git submodule update and the makes sure init is only ran if
  • 从 url 中删除“index.html”并使用单个 301 重定向添加“www”

    为了去除index html or index htm从网址我在我的中使用以下内容 htaccess RewriteCond REQUEST URI index html NC RewriteRule index html 1 NC R 3