【问题标题】:Replace special character in htaccess替换htaccess中的特殊字符
【发布时间】:2013-09-08 01:12:31
【问题描述】:

我将我的论坛从 kunena 更改为 phpbb3。问题是我的旧论坛(在 google 中被索引)在 url 中有特殊字符。我想保留我的网址,所以旧链接适用于新论坛 - 但仅当特殊字符替换为普通字母时。

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

例如

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

所以单词中的字母会像这样替换

pościelówka => poscielowka

有人可以帮我吗? p.s.抱歉英语不好;)

【问题讨论】:

    标签: .htaccess mod-rewrite replace special-characters


    【解决方案1】:

    尝试将此添加到文档根目录中的 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 was not found on this server.
    • 它有效:D 我添加了一些类似的行:RewriteRule ^(.*)Å›(.*)$ /$1s$2 [L,R=301] 但它现在有效。谢谢:D
    • @user2757017 很奇怪,这看起来像是 htaccess 文件或 apache 的一些 unicode 编码问题
    • 是的,这是一些编码问题。奇怪的是不同的浏览器显示不同的字符。我在 htaccess 中为每个编码添加了几行,现在它就像魅力一样。
    • 为了避免永久缓存问题,我将标志编辑为[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
    猜你喜欢
    • 2014-11-03
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2014-12-07
    相关资源
    最近更新 更多