2011-10-27 14 views
0

私は二つのことないページがあります。実際にしかし、私はまた、人々のために次の操作を実行したい http://www.example.com/search/profile-condo.php?id=4.htaccessの問題

によって処理され http://www.example.com/whatever_200/index.html/?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] 

を追加します。

私は間違っていますか?

答えて

1

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

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

2番目の問題は、2番目のルールの正規表現です。それは、式の途中にサーファフレックス^を含んでいます。曲折記号はの文字列の始まりであり、文字列の途中では決して発生しません。曲折記号を削除するとそれが修正されます。 。

第三の問題は、あなたの表現で(.*)を持っていることによって、あなたの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] 
+0

あなたの答えを正しい道に入れてください。ありがとうございます。 – Hugo

+0

あなたを歓迎します;-) – Ondergetekende