删除英文标题,改为中文标题,之后怎么做 301 跳转: Difference between revisions
Jump to navigation
Jump to search
Created page with "在 [https://qingliezhiquan.com/blog/%E5%8D%9A%E5%AE%A2%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%E8%8B%B1%E6%96%87%E6%A0%87%E9%A2%98%E8%BF%98%E6%98%AF%E4%B8%AD%E6%96%87%E6%A0%87%E9%A2%98 博客应该使用英文标题还是中文标题] 一文中,详细描述了删除英文标题,改为中文标题的必要性。但是,把所有英文标题,改变成中文标题,可是有副作用的,曾经在搜索引擎上的 SEO 权重,曾经的英文标题链接,还存在..." |
No edit summary |
||
Line 1: | Line 1: | ||
在 [https://qingliezhiquan.com/blog/%E5%8D%9A%E5%AE%A2%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%E8%8B%B1%E6%96%87%E6%A0%87%E9%A2%98%E8%BF%98%E6%98%AF%E4%B8%AD%E6%96%87%E6%A0%87%E9%A2%98 博客应该使用英文标题还是中文标题] 一文中,详细描述了删除英文标题,改为中文标题的必要性。但是,把所有英文标题,改变成中文标题,可是有副作用的,曾经在搜索引擎上的 SEO 权重,曾经的英文标题链接,还存在。用户如果搜出几十个英文标题,点进去发现文章已经删除,那还了得?所以,我们需要把曾经的英文标题,做一个 301 跳转操作。 | 在 [https://qingliezhiquan.com/blog/%E5%8D%9A%E5%AE%A2%E5%BA%94%E8%AF%A5%E4%BD%BF%E7%94%A8%E8%8B%B1%E6%96%87%E6%A0%87%E9%A2%98%E8%BF%98%E6%98%AF%E4%B8%AD%E6%96%87%E6%A0%87%E9%A2%98 博客应该使用英文标题还是中文标题] 一文中,详细描述了删除英文标题,改为中文标题的必要性。但是,把所有英文标题,改变成中文标题,可是有副作用的,曾经在搜索引擎上的 SEO 权重,曾经的英文标题链接,还存在。用户如果搜出几十个英文标题,点进去发现文章已经删除,那还了得?所以,我们需要把曾经的英文标题,做一个 301 跳转操作。 | ||
== | == 找到标题 == | ||
找到曾经用的英文标题。这个应该在删除前有备份。 | |||
现在最新用的中文标题,对 MediaWiki 站点来说可以在 <code>AllPages</code> 界面找到。 | |||
== 匹配规则 == | |||
需要建立一个 redirects20251003.map 文件,里面以这样的形式,写好英文标题与中文标题的对应。 | |||
<syntaxhighlight lang="apache" line> | |||
/blog/What_basic_knowledge_should_you_know_before_using_a_computer /blog/%E4%BD%BF%E7%94%A8%E7%94%B5%E8%84%91%E5%89%8D%E8%A6%81%E4%BA%\ | |||
86%E8%A7%A3%E5%93%AA%E4%BA%9B%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86 | |||
/blog/how_to_disable_windows_10_desktop_ads /blog/%E6%80%8E%E6%A0%B7%E5%85%B3%E9%97%ADWindows10%E6%A1%8C%E9%9D%A2%E5%B9%BF%E5%91%8A | |||
/blog/Why_cant_i_open_compressed_files /blog/%E5%8E%8B%E7%BC%A9%E6%96%87%E4%BB%B6%E6%89%93%E4%B8%8D%E5%BC%80%E6%98%AF%E6%80%8E%E4%B9%8\ | |||
8%E5%9B%9E%E4%BA%8B | |||
... | |||
</syntaxhighlight> | |||
== RewriteMap == | |||
采用 Apache 的 RewriteMap 方式做跳转。把以下代码添加进你的 VirtualHost 的 443 节点。 | |||
<syntaxhighlight lang="apache" line> | |||
# Put RewriteMap declaration near the top of the vhost (or global server config) | |||
# 因为全部从英文标题变为中文标题,所以有此 redirects20251003.map | |||
RewriteEngine On | |||
RewriteMap redirects txt:/etc/apache2/redirects20251003.map | |||
# Map lookup by REQUEST_URI | |||
# 据 ChatGPT 说这会使查表在 Apache2 内部,速度更快 | |||
RewriteCond %{REQUEST_URI} (.*) | |||
RewriteCond ${redirects:%1|NOT_FOUND} !NOT_FOUND | |||
RewriteRule ^ ${redirects:%1} [R=301,L,NE] | |||
</syntaxhighlight> | |||
== 细节调整 == | |||
由于曾经用的英文标题,在自建时候总有不小心以小写英文字母开头的,那么备份时的英文标题自然是小写英文字母开头。 | |||
然而,MediaWiki 会自动把任何小写字母开头的标题,改为大写字母开头。 | |||
这就导致,匹配规则里有小写,服务器能看到小写字母开头的英文标题,做好了 301 跳转;但是 MediaWiki 的大写字母开头的标题,服务器不知道,没法跳转。 | |||
只需要把曾经用的英文标题,在匹配规则里,全部改为大写英文字母开头,即可与 MediaWiki 的自动大写规则完美适应。用 Emacs 的话可以这样修改:用正则表达式,把 \(^/blog/\) |
Revision as of 22:41, 3 October 2025
在 博客应该使用英文标题还是中文标题 一文中,详细描述了删除英文标题,改为中文标题的必要性。但是,把所有英文标题,改变成中文标题,可是有副作用的,曾经在搜索引擎上的 SEO 权重,曾经的英文标题链接,还存在。用户如果搜出几十个英文标题,点进去发现文章已经删除,那还了得?所以,我们需要把曾经的英文标题,做一个 301 跳转操作。
找到标题
找到曾经用的英文标题。这个应该在删除前有备份。
现在最新用的中文标题,对 MediaWiki 站点来说可以在 AllPages
界面找到。
匹配规则
需要建立一个 redirects20251003.map 文件,里面以这样的形式,写好英文标题与中文标题的对应。
/blog/What_basic_knowledge_should_you_know_before_using_a_computer /blog/%E4%BD%BF%E7%94%A8%E7%94%B5%E8%84%91%E5%89%8D%E8%A6%81%E4%BA%\
86%E8%A7%A3%E5%93%AA%E4%BA%9B%E5%9F%BA%E7%A1%80%E7%9F%A5%E8%AF%86
/blog/how_to_disable_windows_10_desktop_ads /blog/%E6%80%8E%E6%A0%B7%E5%85%B3%E9%97%ADWindows10%E6%A1%8C%E9%9D%A2%E5%B9%BF%E5%91%8A
/blog/Why_cant_i_open_compressed_files /blog/%E5%8E%8B%E7%BC%A9%E6%96%87%E4%BB%B6%E6%89%93%E4%B8%8D%E5%BC%80%E6%98%AF%E6%80%8E%E4%B9%8\
8%E5%9B%9E%E4%BA%8B
...
RewriteMap
采用 Apache 的 RewriteMap 方式做跳转。把以下代码添加进你的 VirtualHost 的 443 节点。
# Put RewriteMap declaration near the top of the vhost (or global server config)
# 因为全部从英文标题变为中文标题,所以有此 redirects20251003.map
RewriteEngine On
RewriteMap redirects txt:/etc/apache2/redirects20251003.map
# Map lookup by REQUEST_URI
# 据 ChatGPT 说这会使查表在 Apache2 内部,速度更快
RewriteCond %{REQUEST_URI} (.*)
RewriteCond ${redirects:%1|NOT_FOUND} !NOT_FOUND
RewriteRule ^ ${redirects:%1} [R=301,L,NE]
细节调整
由于曾经用的英文标题,在自建时候总有不小心以小写英文字母开头的,那么备份时的英文标题自然是小写英文字母开头。
然而,MediaWiki 会自动把任何小写字母开头的标题,改为大写字母开头。
这就导致,匹配规则里有小写,服务器能看到小写字母开头的英文标题,做好了 301 跳转;但是 MediaWiki 的大写字母开头的标题,服务器不知道,没法跳转。
只需要把曾经用的英文标题,在匹配规则里,全部改为大写英文字母开头,即可与 MediaWiki 的自动大写规则完美适应。用 Emacs 的话可以这样修改:用正则表达式,把 \(^/blog/\)