htaccess重定向如果条件汉字

时间:2016-07-27 15:08:18

标签: .htaccess if-statement redirect

如果url在同一.htaccess文件中包含中文字符VS英文字符,如何重定向:

汉字: www.abcdefg.com/wiki/货船

重定向: http://www.abcdefg.com/zh/wiki.php?word=貨船

英文字符:www.abcdefg.com/wiki/Cargo_ship

重定向: http://www.abcdefg.com/en/wiki.php?word=Cargo_ship

现在,我使用下面的代码,如何使用if条件在同一个.htaccess文件中加入2个代码?

重定向到英语:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^abcdefg.com/wiki/$ [NC]
RewriteRule ^(.*)$ http://www.abcdefg.com/en/wiki.php?word=$1 [L,R=301]

重定向中文:

RewriteEngine On
RewriteCond %{HTTP_HOST} !^abcdefg.com/wiki/$ [NC]
RewriteRule ^(.*)$ http://www.abcdefg.com/zh/wiki.php?word=$1 [L,R=301]

是否可以使用If Else来重写规则? 如果$包含英文字符 但我不知道如何写if语句。有人可以帮忙吗? 以下是我的尝试。

RewriteEngine On
RewriteCond %{HTTP_HOST} !^abcdefg.com/wiki/$ [NC]
<If $ contains English characters>
RewriteRule ^(.*)$ http://www.abcdefg.com/en/wiki.php?word=$1 [L,R=301]
</If>
<Else>
RewriteRule ^(.*)$ http://www.abcdefg.com/zh/wiki.php?word=$1 [L,R=301]
</Else>

1 个答案:

答案 0 :(得分:2)

请尝试以下规则:

RewriteEngine On

# handle English URL
RewriteRule ^wiki/([a-z0-9_:'",&-]+)/?$ en/wiki.php?word=$1 [L,QSA,NC]

# handle Chinese URL
RewriteRule ^wiki/([^/]+)/?$ zh/wiki.php?word=$1 [L,QSA,NC]