.htaccess - .htaccess SEO 升级后重定向页面链接?

标签 .htaccess seo

<分区>

我不想在这里用一大堆 .htaccess 问题让一篇文章变得臃肿,所以我将它们单独分解。这与使用 RedirectMatch 为现有网站的现有索引页面创建规则有关。

具体来说,我的测试站点已经运行了大约一年,我现在正在使用 .htaccess 重写干净的 URL 以获得更好的 SEO。因此,当我有一个容器页面时,其内容是根据链接中的查询字符串调用的,如下所示:

http://www.website.com/departments.php?dep=contact_us

我正在努力使 URL 看起来更流畅,例如:

http://www.website.com/contact-us/

我阅读的教程建议,将我的链接更改为新的、更时髦的 SEO 友好样式会导致大量 404 错误和损坏的页面链接,直到该站点再次被索引并且记录已更新。

因此,我的问题是:这是一个合理的担忧,还是会在 24-48 小时内获取新链接?

我问是因为我有几个具有多层文件结构的网站,我认为我的 .htaccess 文件中需要大量规则来修复我可能创建的所有损坏链接。

如果我在这里制造困惑,请告诉我,我会澄清一些事情。

非常感谢!

最佳答案

Thus, my question: Is this a legitimate concern or will the new links be picked up in 24-48 hours?

如果您使用 301(永久)从外部重定向客户端,则可以更快地实现它。这比在服务器端内部重写要棘手得多,因为您会导致规则冲突。例如,如果您想在服务器内部将 url-a 重写为 url-b,则将浏览器从 url-b 重定向到 url-a(这意味着当客户端专门请求 url-b 将其重定向到 url-a 时) :

# internally rewrite url-a (fake URL) to url-b (where the actual content is)
RewriteRule ^url-a$ /url-b [L]

# externally redirect url-b (actual content) to url-a (fake URL)
RewriteRule ^url-b$ /url-a [L,R=301]

由于重写引擎循环,这 2 条规则将继续相互重写并导致 500 内部服务器错误(如果将第二条规则替换为 RedirectMatch,则会发生同样的事情)。要解决此问题,您需要创建一个条件,以便只有在实际请求是针对“url-b” 时才应用外部重定向(第二条规则)。您可以通过匹配 %{THE_REQUEST} 变量来做到这一点,该变量本质上是 HTTP 请求的第一行。

使用您的示例 URL,您将得到如下内容:

RewriteRule ^contact-us/?$ /departments.php?dep=contact_us [L]

RewriteCond %{THE_REQUEST} ^(GET|HEAD)\ /departments\.php\?dep=contact_us
RewriteRule ^ /contact-us/ [L,R=301]

这意味着当像 google-bot 这样的人试图解析 http://www.website.com/departments.php?dep=contact_us 时,第二条规则的条件将匹配请求(看起来像这样:GET/departments.php?dep=contact_us HTTP/1.1) 并且它会被重定向到 http://www.website.com/contact-us/。此时,客户端 (google-bot) 将请求 /contact-us/ 并且将应用第一条规则并在内部将 URI 重写为 /departments.php?dep=contact_us.

关于.htaccess - .htaccess SEO 升级后重定向页面链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15891620/

相关文章:

javascript - asp.net 中没有 javascript 的寻呼机

php - 如何在 .htaccess 中将路径附加到 PHP include_path

asp.net-mvc - 使用 asp.net mvc 将 Http 重定向到 Https 和 SEO

.htaccess - 通过 htaccess 发送 404 错误?

.htaccess - Magento 1.9 - 重定向太多

url - 重写 URL 以针对搜索引擎进行优化

html - 阻止搜索引擎在搜索结果中显示网站正文的适当 html 标记是什么?

angular - 告诉 Scully 忽略路由的静态页面生成?

apache - 使用 .htaccess 在主页 index.php 上强制 SSL 除外

apache - 重定向到子目录并保留查询字符串作为文件名的一部分