2017-05-23 6 views
0

私はサブディレクトリ/ cmsで.htaccessファイルを使用していて、このサブディレクトリをRewriteBaseとして使用しています。リダイレクトは 'backend.php'に行き、私が望む変数を送ります。それは二重言語のサイト(nl | en)、オランダ語と英語です。 %{REQUEST_URI}が(nl | en)で始まる限り、すべてうまく動作します。.htaccess国コードを追加するために書き換えます(見つからない場合)

しかし、nl | enを省略した場合、デフォルトのオランダ語にフォールバックする必要がありますが、これを次の.htaccesファイルに追加できます。私がしようと検索が、これを実現するために右の構文を見つけることができませんされています:

RewriteEngine On 
RewriteBase /cms/ 

RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L] 

RewriteCond %{REQUEST_URI} !(^(nl|en)/) 
#RewriteRule (.*) This is where the solution should be used ? 

RewriteRule ^index\.php$ - [L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !\.[a-zA-Z]{2,4}$ 
RewriteRule ^(nl|en)/([^/]+)/$ backend.php?page=$2&language=$1 [QSA,NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !\.[a-zA-Z]{2,4}$ 
RewriteRule (nl|en)(.*)/(\d+)/$ backend.php?page=$2&id=$3&language=$1 [QSA,NC,L] 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !\.[a-zA-Z]{2,4}$ 
RewriteRule (nl|en)(.*)/(\d+)/(.+)/$ backend.php?page=$2&id=$3&task=$4&language=$1 [QSA,NC,L] 

答えて

0

一つの方法は、オランダとのリライトです言葉が前に付いています。これにより、正しいページへの方向が静かに変わります。

RewriteCond %{REQUEST_URI} !^/cms/(?:nl|en)/ 
RewriteRule ^(.*)$ nl/$1 [L] 

あなたは、クライアントがURLに気づくと、変更したい場合は、あなたがR|redirect代わり

RewriteCond %{REQUEST_URI} !^/cms/(?:nl|en)/ 
RewriteRule ^(.*)$ nl/$1 [R,L] 
+0

おかげオラフを行う必要があり、それは私が(もちろん)行く方法を考えているが、ときに私 RewriteRule!^(?:nl | en)/ nl%{REQUEST_URI} [R、L]これは起こるはずです: http:// mysite:8888/cms/nl/overview/- は有効です。 URL これはどうなりますか: http:// mysite :8888/cms/overzicht/- 書き換え後: http:// mysite:8888/cms/nl/cms/overzicht/ –

+0

オラフ、ありがとうございました。 : http:// mysite:8888/cms/nl/overview/- は有効なURLです。 これは何が起こるかです: ます。http://個人用サイト:8888/CMS/overzicht/-afterリライト次のようになります。 ます。http://個人用サイト:8888/CMS/NL/CMS/overzicht/ のCMSの一部URLは、明らかに%{REQUEST_URI} –

+0

@DMPの一部であるので、繰り返されます。はい、私はそれを逃しました、ごめんなさい。更新された回答があなたに役立つかどうかを確認してください。 –

0

あなたのデフォルトのルールは、このいずれかを指定できます。これを処理する

# This is where the solution should be used ? 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_URI} !^/(nl|en)/ [NC] 
RewriteRule ^([^/]+)/?$ backend.php?page=$1 [QSA,L] 
関連する問題