在htaccess中替换特殊字符

6

我将我的论坛从Kunena改为PhpBB3。问题在于,我的旧论坛(已被Google索引)在URL中使用了特殊字符。我想保留我的URL,以便旧链接适用于新的论坛 - 但只有当特殊字符被替换为正常字母时才有效。

我需要使用htaccess来实现即时字符转换。

例如:

ą => a
ę => e
ś => s
ć => c

因此,字母将以以下方式替换

pościelówka => poscielowka

有人能帮我吗? 附言:抱歉我的英语不好 ;)

1个回答

6
尝试将以下内容添加到您文档根目录的htaccess文件中:
RewriteEngine On

RewriteRule ^(.*)ą(.*)$ /$1a$2 [L,R=301]
RewriteRule ^(.*)ę(.*)$ /$1e$2 [L,R=301]
RewriteRule ^(.*)ś(.*)$ /$1s$2 [L,R=301]
RewriteRule ^(.*)ć(.*)$ /$1c$2 [L,R=301]
RewriteRule ^(.*)ó(.*)$ /$1o$2 [L,R=301]

这里需要进行URL重定向,例如:
http://yourdomain.com/pościelówka

并将浏览器重定向到:
http://yourdomain.com/poscielowka

只要/poscielowka URI 实际上存在即可。

它对我不起作用 :( 我尝试了URL .... coś.html 但是我得到了404错误 /coÅ›.html在此服务器上未找到。 - user2757017
它可以工作了 :D我添加了一些行,例如:RewriteRule ^(.)Å›(.)$ /$1s$2 [L,R=301],但现在它可以工作了。谢谢你 :D - user2757017
@user2757017 奇怪,那看起来像是.htaccess文件或Apache出现了一些Unicode编码问题。 - Jon Lin
是的,这是一些编码问题。奇怪的是,不同的浏览器显示不同的字符。我为每种编码添加了几行到htaccess,现在它完美地工作了。 - user2757017
为了避免永久缓存问题,我将标志编辑为 [R=301,L,E=nocache:1],然后添加以下行:Header always set Cache-Control "no-store, no-cache, must-revalidate" env=nocacheHeader always set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=nocache - quantme
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接