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

在.htaccess SEO升级后重定向页面链接?,.htaccess,seo,.htaccess,Seo,我不想在这里的一篇帖子上写太多的.htaccess问题,所以我将把它们逐一分解。这与使用RedirectMatch为作为现有网站一部分的现有索引页面创建规则有关 具体地说,我的测试站点已经运行了大约一年,我现在使用.htaccess重新编写干净的URL,以获得更好的SEO。因此,当我有一个容器页面,其内容是根据链接中的查询字符串调用的,如下所示: http://www.website.com/departments.php?dep=contact_us 我正在努力使URL看起来更平滑,如: ht

我不想在这里的一篇帖子上写太多的.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文件中加入大量的规则来修复我可能创建的所有断开的链接

如果我在这里制造混乱,请让我知道,我会澄清的事情

非常感谢

因此,我的问题是:这是一个合理的担忧,还是新的链接将在24-48小时内恢复

如果使用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]
由于重写引擎循环,这两条规则将继续相互重写,并导致500个内部服务器错误。如果用重定向匹配替换第二条规则,也会发生同样的情况。要解决这个问题,您需要创建一个条件,以便只有当实际请求是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]

这意味着当像谷歌机器人这样的人试图解决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将请求/联系我们/并应用第一条规则,并在内部将URI重写为/departments.php?dep=contact_us。

我的朋友,你是一个了不起的知识来源。我看到的唯一缺点是必须为每个页面添加规则。这里出现了两个问题:新链接到索引需要多长时间?第二,这里有一篇文章:关于cutom PHP函数建议的三分之一。这是一个更灵活的解决方案吗?再一次,祝你好运,谢谢@mileaminute如果有一个通用的映射模式,比如/contact-us/to/departments.php?dep=contact\u-us,你可以用正则表达式替换contact-us部分,比如[^/]+和使用$1的反向引用。使用php重定向肯定是一种更灵活的选择。php脚本(如本例中的departments.php)会知道它是直接请求的,而不是内部重定向,并在发生这种情况时重定向到适当的URL。因此,如果这是您自己的项目,可能会让人觉得我在这里仍然很忙,你会用.htaccess还是PHP函数来做这件事?此外,我仍然很好奇这些新链接需要多长时间来建立索引。更改DNS设置时是24-48小时还是更长。我的想法是,如果只有48小时,为什么还要麻烦重定向呢?@mileaminute如果一切都像wordpress那样通过一两个php脚本进行路由,那么重定向到php中外观更好的URL就容易多了,因为它发生在一个地方。如果有几十个脚本,那么在htaccess中执行可能会更容易。如果SEO友好的URL方案需要数据库查找,那么它必须在php中进行。没有最好的办法,这完全取决于你的背景。