2011-07-05 22 views
0

私のプロジェクトは、古い静的サイトを動的サイトにすることです。古いサイトには約40ページあります。htaccessリダイレクト

新しいフォーマットは現在2つの言語で提供されていますが、今後はさらに多くのフォーマットが可能になります。

  1. 基本的なもの:実際のURLの2セットがあります

    /index.htmlが/about.htmlは、

  2. 残り/contact.html:/folder1/page1.html、/

    1. 番目:folder1の/ page2.html、/folder3/page3.htmlなど

    クライアントはデフォルトのものと同じパターンを持つように第二言語を望んでいますE基本的なもの:/ 言語 /index.htmlが/ 言語 /about.html、/ 言語 /contact.html

  3. 残り:/language/folder1/page1.html、/言語/ folder1の/ page2.html、/language/folder3/page3.html、等私はhtaccessファイルを書き換えることができ

基本ページ:私は立ち往生していますページの残りの部分については

# default language  
RewriteRule ^about.html$ about.php?language= [NC,L] 
#other language 
RewriteRule ^([^/]+)/about.html$ about.php?language=$1 [NC,L] 

私のデータベースには、既存のURLとその内容が保存されています。例えば

、基本的な言語のための:?

/folder1/page1.htmlがdynamicpage1.php言語= & URL =/folder1の/ page1.html

/フォルダ2/PAGE2によって提供されます。 HTMLはdynamicpage1.php?言語= & urlで提供されます= /フォルダ2/page2.html

/folder3/page3.html dynamicpage2.php?言語で提供されます= & URL =/FOLDER3/page3.html

そして、他の言語について:?

/([^/]+)/folder1/page1.html dynamicpage1.phpによって提供されます言語= $ 1 & URL =/folder1の/ page1.html

/dynamicpage1.php?language = $ 1 & url =/folder2/page2.html

/([^ /] +)/ folder3/page3によって、([^ /] +)/ folder2/page2.htmlが配信されます。 htmlはdynamicpage2.phpによって提供されますか?language = $ 1 & url =/folder3/page3.html

これらのルールはどのように構成できますか?

私がしようとした場合:(。*)?のRewriteRule ^([^ /] +)/ $のsubservices.phpを言語= $ 1 & URL = $ 2、それはあなたがより良いURLに/リストに可能な言語を指定

+0

1)「失敗」とはどういう意味ですか? 2) 'subservices.php'スクリプトは何をしますか? - 私は理解するように、実行する動的ページを決定するだろうか? – LazyOne

答えて

1

を失敗しました書き換えルール - それはもっと正確になります。このルールは、正常に動作します:あなたが使用しないどんな言語に

RewriteRule ^((EN|FR)/)?(.*\.html)$ /subservices.php?language=$2&url=/$3 [NC,QSA,L] 

または

RewriteRule ^((english|french)/)?(.*\.html)$ /subservices.php?language=$2&url=/$3 [NC,QSA,L] 

変更EN|FRを。

  • /index.html/subservices.php?language=&url=/index.html
  • /FR/index.htmlに書き換えする/subservices.php?language=FR&url=/index.html
  • /folder1/page1.htmlに書き換えする/subservices.php?language=&url=/folder1/page1.html
  • /FR/folder1/page1.htmlに書き換えする/subservices.php?language=FR&url=/folder1/page1.html
  • /ZZ/folder1/page1.htmlに書き換えする/subservices.php?language=&url=/ZZ/folder1/page1.html(ZZに書き換えされます許容される言語として認識されない)。
+0

私はあなたのコードを試しましたが、EN | FRの代わりに私は英語を使用しました。フランス語と私はinernalサーバーのエラー500を得ました。 – andrew

+0

私は小さなミスを犯しました(私は役に立たなかった '[]') - ルールをもう一度チェックし、PCでテストしてうまく動作しました – LazyOne

+0

ok私は50%あります RewriteRule ^((英語)フランス語/ )?(。* \。htmlの)$ /subservices.php?language=$2&url=/$3 [NC、QSA、L] これは/フランス語/ディレクトリ のために動作しますが、英語では、私は500内部サーバーエラー を取得私はこの他のいくつかのルールが競合していると思っています。 – andrew