似乎在 wordpress 中可能有更好的方法来执行此操作,您可能想通过wordpress Trac 票证做一个快速浏览器,可能有一些补丁或临时修复问题。但是,如果您需要使用 htaccess/redirect 方法,您可以使用RewriteMap清理和重定向(如果需要)或显式重定向非 ascii 字符。
RewriteMap 需要访问服务器或虚拟主机配置来设置映射。它可以像/stories/will-this-be-another-la-niña-year
映射到的 URI列表一样简单http://yourdomain.com/stories/will-this-be-another-la-nina-year
(所有 ascii URL,这http://
很重要,因为它告诉 mod_rewrite 重定向浏览器)。或者您可以编写一个脚本来查找非 ascii 字符并将它们替换为适当的 ascii 字符。
文字映射:
RewriteMap sanitize txt:/path/to/uri_mapping.txt
脚本映射:
RewriteMap sanitize prg:/path/to/sanitize_script.php
然后在您的 htaccess 文件中,您可以像这样调用此映射(这些规则需要高于wordpress 规则,因为您希望在wordpress 获取它们之前对 URI 进行清理。
RewriteRule ^(.*)$ /${sanitize:$1|$1} [L]
如果您无权访问服务器/虚拟主机配置,则必须枚举 htaccess 文件中的可能性,再次将这些规则置于 wordpress 规则之上:
# replace ñ
RewriteRule ^(.*)ñ(.*)$ /$1n$2 [R=301,L]
# replace ú
RewriteRule ^(.*)ú(.*)$ /$1ú$2 [R=301,L]
等等