就在上周,我完成了一个客户的重新设计项目,并上线了该项目。在发布当天,下午晚些时候,客户给我打了电话
客户:我刚刚点击了我们的网站,它无法打开!!
我:真的吗?这很奇怪。对我来说,网站似乎一切正常。让我们看看是否可以找到问题所在。
客户:我刚刚点击了我们的网站,它无法打开!!
我:好的,我明白了。你说的“点击了我们的网站”是什么意思?
客户:我在桌面上有一个按钮,我点击它可以访问我们的网站,但当我点击它时,出现了一个错误页面,而不是我们的网站。
我:嗯……你能告诉我你的网页浏览器中显示的完整网址是什么吗?
客户:http://clients-website.com/index.html
我:啊哈!我明白了,你的书签无法工作,因为它专门指向一个不再存在的 HTML 文件,新首页实际上是 index.php 而不是 index.html。不过不要修复你的书签,你的一些访客可能会遇到同样的问题,所以我将修复它,以便你的书签可以正常工作。
客户:我刚刚点击了我们的网站,它无法打开!!
我:好的。说真的,深呼吸几次,给我 10 分钟。
将 index.html 重定向到 index.php
如果用户将其浏览器设置为**默认显示完整 URL**,则其书签将反映此完整 URL。这意味着,如果您更改其文件扩展名(例如,在本例中从 html 移动到 php),则会破坏其书签。这不好。幸运的是,我们可以解决这个问题。
我最初的想法是“可惜这不是 PHP”,因为 PHP 中的重定向非常容易
<?php
header( 'Location: http://www.redirect-location.com' );
exit();
?>
这实际上是您需要放在 PHP 文件中才能使重定向生效的所有内容。不过没关系,使用 HTML 进行重定向也同样简单,但您确实需要创建一个常规的 HTML 结构化文件,然后将此元语句放入头部
<meta http-equiv="refresh" content="1;url=http://www.redirect-location.com">
“1” 代表“延迟一秒”,您可以将其设置为任何整数。这是一个可接受的解决方案,并且可以正常工作,但我认为它不是**最佳**解决方案。首先,您需要保留该 HTML 文件,这会使您的目录变得杂乱,并且每次您通过 FTP 登录时都会看到它。有一种更好的方法……
.htaccess 重写
只需将此规则添加到 .htaccess 文件中,重定向就会在服务器端快速轻松地发生。
RewriteEngine on
RewriteRule index\.html index.php [NC,R]
更新:来自 Malcolm New - 显然以上内容将匹配任何类似 whateverindex.html 的文件名,以下代码可以防止这种情况。
RewriteRule ^index\.htm$ index.php [NC,R]
另一个更新:来自 Jessi Hance -
我必须添加 L 标志以告诉服务器停止处理重写规则。我还发现我需要将规则放在 .htaccess 文件的顶部,位于 WordPress 生成的规则之上。
RewriteEngine On
RewriteBase /
RewriteRule ^index\.html?$ / [NC,R,L]
我:好的,现在一切都已修复,您的书签应该可以正常工作了。
客户:太好了。现在,请给我一两天时间,让我再找些东西来让你感到害怕,然后我会再次歇斯底里地给你打电话。
我:听起来不错。
是时候换个电话号码了 :) !
为什么这听起来如此熟悉?:P
在 HTML 方法中,您使用了 hhtp 而不是 http,就这些!
顺便说一句,好网站!
嗨,Chris,
我遇到了一个更复杂的问题,我将客户的网站迁移到了 WordPress。
旧网站的链接类似于“http://www.beyaznokta.org.tr/Common.aspx?Menu=4&Page=NNN.aspx”
您知道如何处理此类链接吗?
@Rich:啊!你说得对,我已修复,谢谢!
@Volkan:这取决于您希望这些旧链接链接到哪里。如果您只想将所有这些链接到一个特定位置,则可以使用以下内容替换 Common.asp 文件
<% Response.Redirect "https://w3schools.org.cn" %>
如果您需要比这更高级的功能,我并不是专家,但您可以尝试使用一些 ASP URL 处理,看看是否可以编写一些条件语句来将它们引导到需要去的地方。
作为一个小技巧,我建议在 PHP 标头重定向后添加以下内容
exit();
这将退出脚本,并且不允许任何其他标头影响重定向。我之前就被这个问题困扰过!
谢谢 David,我将更新帖子,以便人们从那里复制粘贴时可以获得最佳版本。
特别是在使用 WordPress 或其他东西时,这是一个非常有用的技巧。
如果您已将 index.html 替换为 index.php,则应在 htaccess 中设置 301 重定向,例如
redirect 301 /index.html http://www.example.com/index.php
这会告诉搜索引擎这是一个永久性移动。
这适用于所有已替换为不同名称的页面 - 从静态迁移到动态时非常常见。
谢谢,一些非常有用的关于将 html 重定向到 php 的信息。
补充几点,首先,您应该使用以下内容解决您的 www 与非 www 问题
# 排序 www 与非 www 规范 URL 问题
RewriteCond %{HTTP_HOST} ^example.com
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
然后,您可以使用此方法将所有 .html 301 重写为 .php
# 将所有 .html 请求传递到 .php 等效文件
RewriteRule ^(.+)\.html$ http://www.examle.com/$1.php [R=301,L]
感谢您的提示。您太棒了。
我喜欢您的客户说:我刚刚点击了我们的网站,它无法打开!!,:p
& 非常感谢您的提示,:D
301 重定向似乎是永久移动页面的推荐选项,但我使用的是 Windows 服务器,它无法识别 .htaccess 文件。如何在 Windows 服务器上实现此功能?
谢谢,我一直在寻找 301 重定向代码,我编写的代码从未正常工作,所以谢谢。
非常方便的 htaccess 代码,谢谢!
谢谢 - 工作正常
这太简单了,谢谢您节省了我很多时间。
这个网站太棒了,我到处找这个 301 重定向信息。
对于 vcalendar 安装,我发现将以下内容放在
DirectoryIndex index.php index.html index.htm
在相关目录中使事情正常工作
即 index.php 被设置为默认索引(日历功能仍然需要 index.html)
我知道这是一个特定且旧的用例,但此解决方案可能在其他情况下有用。
感谢您的网站。
我使用 HTML 和 CSS 进行设计,但我不知道如何像本地网站一样在本地运行我的 index.html 文件,基本上我想为连接的约 300 台计算机用户提供本地区域服务。这是一个图书馆,里面有电子书、分类书籍列表、杂志、年度报告、研究论文等。
请问我现在如何展示我的本地网站?我急需解决这个问题。