1

手続き的にURLに対して複数のことを行うmod_rewriteの助けが必要です:

  • URL が en,es,pt-br で始まる場合は、それを削除して ?lang=$1 を追加します

  • 次に URL に「web/」が含まれていない場合は、追加します。

  • URL が空白の場合は、「web/en/」に移動します

  • それらのどれも実際にURLを書き換えるべきではありません

これの意味は:

 http://www.domain.com/en  >> http://www.domain.com/web/?lang=en
 http://www.domain.com/en/mobile  >> http://www.domain.com/mobile/?lang=en
4

1 に答える 1

2

Try:

RewriteEngine On

# This is to prevent the rules from looping, they only work as on-shot
RewriteCond %{ENV:REDIRECT_STATUS} 200
RewriteRule ^ - [L]

# If the url is blank, go to 'web/en/'
RewriteRule ^/?$ /web/?lang=en [L,QSA]

# If the url starts with en,es,pt-br, remove it and add ?lang=$1 ,has /web
RewriteRule ^/?(en|es|pt-br)/web(/?.*)$ /web$2/?lang=$1 [L,QSA,R]

# If the url starts with en,es,pt-br, remove it and add ?lang=$1 ,has no /web
RewriteRule ^/?(en|es|pt-br)/?$ /web/?lang=$1 [L,QSA,R]

# If the url starts with en,es,pt-br, remove it and add ?lang=$1 ,everything else
RewriteRule ^/?(en|es|pt-br)/(.+?)/?$ /$2/?lang=$1 [L,QSA,R]
于 2012-10-14T04:18:31.407 に答える