0

.htaccessファイルを取得してURLを自分のサイトに正しくルーティングできないようです。私は人々がURLのようなものから選ぶことができる多くの言語を持っています:

http://www.domain.com/en/
http://www.domain.com/en/contact

しかし、「en」変数を取得するルールを作成するときに、ページ「contact」を機能させることができないようです。

RewriteRule /([^/]+)/([0-9]+)/ index.php?language=$1

これを使用して言語コードを取得しますが、連絡先ページを機能させるにはどうすればよいですか?

編集:

どうやら私はいくつかのQSAオプションが必要でしたが、今では言語は変数として連絡先を取得します

RewriteRule ^(.*)$ index.php?language=$1 [QSA,L]

このルールを使用すると、サイトは次のようになります。

http://www.domain.com/en/contact

戻り値:

en/contact

EDIT2

私が達成しようとしているのは、ディレクトリ構造です。

/
/contact
/about

これらのフォルダはルートにありますが、/en/言語変数を取得して無視します。したがって、&page = contactの2番目の変数は必要ありません。ディレクトリ・フォルダにルーティングするために必要です。

4

1 に答える 1

1

2 番目のグループを変更する必要がありますが、2 つの式を組み合わせてみてください - の[0-9]+ような単語ではなく、数字のみに一致しますcontact。これを試して:

RewriteRule ^([^/]+)/([^/]+)/?$ index.php?language=$1 [QSA,L]

このQSAオプションを使用すると、クエリ文字列をクリーンな URL に追加できます。おそらく次のようになります。

http://www.domain.com/en/contact?to=support&subject=Hello

あなたのコメントに応えて、この式はうまくいくはずです:

RewriteRule ^([^/]*)/([^/]+)/?$ $2/index.php?language=$1 [QSA,L]

書き直されたルールで$2contact、たとえば、 hold と$1holdenです。前者はディレクトリとして使用され、後者はクエリ文字列の引数として使用されます。

于 2012-06-12T21:29:16.910 に答える