1

現在、これらを .htaccess ファイルで使用しています

RewriteRule (.*)/(.*)/(.*)/(.*)\.html$ index.php?lng=$1&page=$2&subpage=$3&subpage1=$4 [L]
RewriteRule (.*)/(.*)/(.*)\.html$ index.php?lng=$1&page=$2&subpage=$3 [L]
RewriteRule (.*)/(.*)\.html$ index.php?lng=$1&page=$2 [L]
RewriteRule (.*)\.html$ index.php?page=$1 [L]
RewriteRule index\.html$ index.php [L]

そしてうまく働く。

別のサブページを追加したい場合は、すべての get を含む新しい RewriteRule を入力する必要があります。たとえば、前のコードに別のサブページを追加する場合は、次のように入力する必要があります。

 RewriteRule (.*)/(.*)/(.*)/(.*)/(.*)\.html$ index.php?lng=$1&page=$2&subpage=$3&subpage1=$4&subpage1=$5 [L]

しかし、すべての get を処理するために、どのようにすればより単純で一般的なものにすることができるでしょうか?

注: GET 名 (ページ、サブページ 1 ....) は気にしません。

編集:クエリ文字列を取得できるようにしたいのですが、名前(キー)は気にしません: page 、 subpage 、 subpage1 など

4

1 に答える 1

0

使用できる(looooong)ルールは1つだけですが、醜いので、準備してください...

RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^([^/]+)(/([^/]+))?(/([^/]+))?(/([^/]+))?(/([^/]+))?\.html$  index.php?p1=$1&p2=$3&p3=$5&p4=$7&p5=$9 [L]

ここでの秘訣は、パターン(/([^/]+))?を使用してパラメータを損なうことです(1,3,5 ...)

たとえば、urlwww.domain.com/a/b/c.htmlを使用すると、次のようになります。

  • $ 1 = a
  • $ 2 = / b
  • $ 3 = b
  • $ 4 = / c
  • $ 5 = c
  • $ 6〜$ 9 = null
于 2012-06-09T23:46:40.003 に答える