有 2 种(在这种情况下)重定向。当客户端(无论是浏览器、搜索引擎索引机器人还是其他任何东西)请求 URI 时,服务器可以告诉客户端“您要查找的内容存在,但它在其他地方”。在302或临时重定向的情况下,它本质上是在告诉客户端“您要查找的内容存在,但它暂时在此URL 上”。在301或永久重定向的情况下,它本质上是在告诉客户端“您要查找的内容存在,但它已永久移至此URL”。
对于后者,浏览器、代理服务器和搜索引擎索引知道旧 URL 不再有效并停止使用它,从现在开始使用服务器通过 301 重定向返回的新 URL . 对于像谷歌这样的搜索引擎,它有一个旧 URL 的索引,以及它在该 URL 的整个生命周期中积累的所有数据。当其中一个机器人看到 301 时,它知道旧 URL 及其内容并没有消失,而是永久移动到另一个 URL。Google 为旧 URL 收集的所有相关数据都会被转移到新 URL。谷歌可能可以在没有 301 重定向的情况下解决大部分问题,但这是确保谷歌获得权利的可靠方法。
您可以通过 mod_rewrite 进行这样的重定向:
RewriteEngine On
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /tutorials\.php\?name=([^&\ ]+)
RewriteRule ^ /tutorials/programming/%1.php [L,R=301]
您应该将它放在文档根目录中 htaccess 文件的顶部附近。该条件检查是否已/tutorials.php使用查询字符串进行了实际请求name="something"。“某事”部分按匹配分组,并通过%1反向引用访问。