2011-07-18 1 views
2

私は多言語のウェブサイトを作成しています。したがって、私はURLの書き換えの問題についていくつかの助けをしたいと思います。URL URLを国コードで書き換える

ケース:

  • 誰かが(NL、EN、DE)国コードを追加することなく、www.example.comを訪問するときのhtaccessがi.g.をwww.example.com/nl/に訪問者をリダイレクト RewriteRule !(nl|en|de)(.*).* /nl/ [R=301,L]
  • ウェブサイトが更新され、多くのURLがウェブサイト(Google、フォーラム)に誘導されています。例えば、 www.example.com/oldpage-nomore.html私が望むのは以下のことです。 htaccessはリクエストuriにnl、enまたはdeが含まれていないことを検出し、pagenotfound.phpにリダイレクトする必要があります。 RewriteRule ^(.*)\.html /public/oldurl?section=nl&notfound=$1$2&basehref=true&%1 [PT,L]この書き換えルールの問題は、.htmlで終わるすべてのファイルがリダイレクトされていることです。

    • 誰かがwww.example.comを訪問し、何のリクエストURIが、これは
    • をwww.example.com/nl/にリダイレクトする必要があります入力されていない場合:私は、次のさを探しています何

    そこに要求されたURIがあり、これは国番号含まれているdoens't場合(NLを|エン|ド)

をpagenotfound.phpするリダイレクトよりも、私は次のことを試してみましたが、それは仕事doens't:

RewriteCond %{REQUEST_URI} !^(nl|en|de)$ 
RewriteRule ^([a-z]{2})/(.*)\.html$ /pagenotfound.php?page=$2 [L,R=404] 

私は誰かが助けてくれることを願っています。 ありがとうございます。

答えて

2

は、サーバーのルートフォルダで、この.htaccessファイルを置くようにしてください:

RewriteEngine On 

RewriteCond %{REQUEST_URI} ^/?$ 
RewriteRule ^.*$ /nl/ [R] 


RewriteCond %{REQUEST_URI} !^/(nl|en|de) 
RewriteRule ^.*/(.*)\.html$ /pagenotfound.php?page=$2 [L,R=404] 

(あなたはおそらく、いくつかのミスを犯し、私はそれらを修正しようとした) 私は最初のRewriteCondの%{REQUEST_URIとわからないんだけど}正規表現 - おそらく疑問符やスラッシュを削除すると、今はテストできません。

+0

ありがとうございます。私は今夜​​これをチェックしてお知らせします。 – FinchSol