以下の例のように URL を書き換えたいと思います。
http://www.domain.com/index.php <=> http://www.domain.com
http://www.domain.com/index.php?lang=de <=> http://www.domain.com/de
http://www.domain.com/index.php?p1=something <=> http://www.domain.com/something
http://www.domain.com/index.php?lang=de¶m1=something <=> http://www.domain.com/de/something
http://www.domain.com/index.php?p1=something&p2=something-else <=> http://www.domain.com/something/something-else
http://www.domain.com/index.php?lang=de&p1=something&p2=something-else <=> http://www.domain.com/de/something/something-else
ルールでは、DE だけでなく、他のロケールを追加できるようにする必要があります。また、ユーザーがhttp://domain.com/de/などにアクセスした場合、301 でhttp://domain.com/deにリダイレクトする必要があります(末尾のスラッシュによって URL が重複することはありません)。
助けてください。どうもありがとう。
編集
必要なフォルダーをフィルターで除外しようとしましたが、最初のパラメーターで立ち往生しました
#Rewrite to www
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^domain.com[nc]
RewriteRule ^(.*)$ http://www.domain.com/$1 [r=301,nc]
#rewrite all physical existing file or folder
RewriteCond %{REQUEST_FILENAME} !-f [OR]
RewriteCond %{REQUEST_FILENAME} !-d
#allow things that are certainly necessary
RewriteCond %{REQUEST_URI} "/images/" [OR]
RewriteCond %{REQUEST_URI} "/media/" [OR]
RewriteCond %{REQUEST_URI} "/script/" [OR]
RewriteCond %{REQUEST_URI} "/style/"
#rewrite rules
RewriteRule .* - [L]
RewriteRule (.*) index.php?lang=$1 [QSA]
#add trailing slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*[^/]$ /$0/ [L,R=301]
#Prevent viewing of .htaccess file
<Files .htaccess>
order allow,deny
deny from all
</Files>
#Prevent directory listings
Options All -Indexes