1

ここでいくつかの例を見つけようとしましたが、どれもうまくいきません..私はREを扱う初心者です

.htacess > RewriteRule に関するヘルプが必要です。どうすればこれを達成できますか?

www.mysite.pt/folder/?a=home&id=22 -> www.mysite.pt/folder/index.php?lang=pt&a=home&id=22

www.mysite.pt/folder/en/?a=home&id=22 -> www.mysite.pt/folder/index.php?lang=en&a=home&id=22

ノート:

  • 「www」の有無にかかわらず


  • ?a=home&id=22 は単なる例です。クエリ文字列全体を追加したいと思います。

  • 「フォルダ」は
    、クライアント サーバー (例: www.mysite.pt/site_v2/) でテストする必要があるため、Web サイトをリリースするまで必要です。

よろしくお願いいたします。

ペドロ

4

2 に答える 2

0

私は主に正規表現であなたを助けることができます。過去にいくつかの htaccess 介入を行いましたが、詳細はわかりません。

www.mysite.pt/folder/?a=home&id=22 => www.mysite.pt/folder/index.php?lang=pt&a=home&id=22

regex
(www\.)?mysite\.pt/folder/\?(.*)
replace with
www.mysite.pt/folder/index.php?lang=pt&$1

www.mysite.pt/folder/en/?a=home&id=22 => www.mysite.pt/folder/index.php?lang=en&a=home&id=22

regex
(www\.)?mysite\.pt/folder/en/\?(.*)
replace with
www.mysite.pt/folder/index.php?lang=en&$1

書き換えルールを指定する順序が重要であり、私の知る限り最初のものが勝つことを思い出します。

なんで?複数の正規表現が一致する可能性があります

これは、これら 2 つの正規表現には当てはまりませんが、注意すべき点があります。

于 2012-06-27T14:36:15.373 に答える
0

EN と PT のみをサポートしますか?

また、画像、CSS、ファイルなどもたくさんあると思います。それらの EN および PL バージョンも必要ですか? とにかく、今はスクリプトに集中しましょう。/somefolder/en/ここでは、と の URI を取得します/somefolder/。DOCroot を使用している場合は、次のもの.htaccessが必要になります。

RewriteEngine On
RewriteBase   /

RewriteRule   ^(.*?)/en/$   $1/en/index.php?lang=en  [L,NS,QSA]
RewriteRule   ^(.*?)/$      $1/pl/index.php?lang=pt  [L,NS,QSA]

mod_rewrite のドキュメントで L、NS、QSA フラグを調べます。サブクエリがあなたを噛むのを止めるには、NSフラグが必要です。QSA フラグは、langパラメーターをクエリ リストの残りの部分とマージします。

固定フォルダーが必要な場合は、(.*?)$1を固定フォルダー名に置き換えます。また、HTML 参照も同様に機能する必要があることを忘れないでください。たとえば、ページに画像が含まれている場合、これはブラウザの観点からsrc="images/mygif.gif"解決されます。たとえば、これらをマップする場所を見つけて、対応するルールを追加する必要があります。<same directory as HTML file>/images/mygif.gif/folder/en/images/mygif.gif

于 2012-06-27T17:03:18.337 に答える