@Ωmegaのおかげで、以前の問題(詳細は.htaccess正規表現の問題)をほぼ完全に解決し、この解決策に到達しました:
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*/|)(en|de|fr)(/|)$ [NC]
RewriteCond %1%3index.php -f
RewriteRule ^(.*/|)(en|de|fr)(/|)$ index.php?lang=$2 [NC,QSA,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} ^(.*/|)(en|de|fr)(/.*|)$ [NC]
#RewriteCond $1$3.php -f
RewriteRule ^(.*/|)(en|de|fr)(/.*|)$ $1$3.php?lang=$2 [NC,QSA,L]
基本的に、これらの行はdomain/language/sub/.../somepage
toの形式で何でも書き換えdomain/sub/.../somepage.php?lang=language
ます。最初のブロックは、にリダイレクトされるdomain/language/
終了の有無にかかわらず、の形式のURL用です。/
index.php
これは非常にうまく機能しますが、次の2つの小さな不具合が残っています。
2番目のブロックの3行目(私は#コメントしました)は、何があっても一致しません。奇妙な部分は、4行目で機能することです。つまり、私のページは実際に正常に表示されます。
-f
これは、パラメータがここで間違っていることを意味しますか?/
(2番目のブロックのみ、インデックスファイルで機能します)で終わるURLを入力すると、書き換えが壊れます。つまり、次のように出力されます。入力されたURLの潜在的な可能性を正規表現で除外する方法はありますか?domain/language/sub/.../somepage/.php
/
ご意見ありがとうございます !