htaccess和REQUEST_URI来匹配列表和重定向

时间:2014-04-25 06:17:33

标签: regex apache .htaccess mod-rewrite

我有一个iso 639-1语言列表,如下所示:

en, fr, de, es, ja

如果请求URL包含我列表中的一个代码,则会重定向用户 如果数组中不存在语言代码(例如aa,bb),则用户将被重定向到默认索引页。
语言代码始终为2个字符,后跟域名。

重定向示例如下:

http://example.com/en/index.html  --> http://example.com/index_en.html
http://example.com/fr/index.html  --> http://example.com/index_fr.html
http://example.com/de/index.html  --> http://example.com/index_de.html
http://example.com/es/index.html  --> http://example.com/index_es.html
http://example.com/ja/index.html  --> http://example.com/index_ja.html

http://example.com/aa/index.html  --> http://example.com/index.html
http://example.com/bb/index.html  --> http://example.com/index.html
http://example.com/zz/index.html  --> http://example.com/index.html

我试过这样:

RewriteCond %{REQUEST_URI} ^example.com/(en|fr|de|es|ja)/ [NC]
RewriteRule . /index_$1.html [L]

1 个答案:

答案 0 :(得分:2)

这样做:

RewriteEngine On

RewriteRule ^(en|fr|de|es|ja)/index\.html$ /index_$1.html [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[a-z]{2}/index\.html$ /index.html [L,NC]