.htaccessの問題

私は2つのことをするページを持っています:

When users click on this link: http://www.example.com/whatever_200/index.html/?id=4 it is actually processed by http://www.example.com/search/profile-condo.php?id=4

しかし、私はまた、ブラジルの人々のために次のことをしたい www.example.com/br/whatever_200/index.html/?id=4 www.example.com/br/search/profile-condo.php?id=4

以下は、英語版に最適です。

addhandler x-httpd-php5 .html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/index.html$ /search/profile-condo.php?name=$1&%{QUERY_STRING} [L,QSA]

しかし、私が追加するとき

RewriteRule ^(.*)/br/^(.*)/index.html$ /br/search/profile-condo.php?name=$1&%{QUERY_STRING} [L,QSA]

それは動作しません。

私は間違って何をしていますか?

0

1 答え

あなたのルールには3つの問題があります。

まず第一にルールの順序。最初のルールは /index.html で終わるものと一致し、リダイレクトを実行します。最終的な規則( L フラグ)として(適切に)フラグが立てられます。そのため、第2のルールは決して実行されません。一般的なルールの前に br ルールを追加すると、最初にテストされ、一致する場合はリダイレクトが行われます。

2番目の問題は、2番目のルールの正規表現です。それは、式の途中で ^ で囲まれています。サーカンフレックスは、文字列の途中では決して出現しない文字列の開始を意味します。曲折記号を削除するとそれが修正されます。

第3の問題は、式の中に(。*)を置いて、あなたのURLの/br/の部分の前に文字を表示できることです。実際にはこれを必要としません。

要約:

addhandler x-httpd-php5 .html
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/br/(.*)/index.html$ /br/search/profile-condo.php?name=$1&%{QUERY_STRING} [L,QSA]
RewriteRule ^(.*)/index.html$ /search/profile-condo.php?name=$1&%{QUERY_STRING} [L,QSA]
1
追加された
どういたしまして ;-)
追加された 著者 Ondergetekende,
あなたの答えを正しい道に入れてください。どうもありがとう!
追加された 著者 Hugo,