Проблемы с .htaccess - PullRequest
       1

Проблемы с .htaccess

0 голосов
/ 27 октября 2011

У меня есть страница, которая делает две вещи:

Когда пользователи нажимают на эту ссылку: http://www.example.com/whatever_200/index.html/?id=4 она фактически обрабатывается http://www.example.com/search/profile-condo.php?id=4

Однако я также хочуЧтобы сделать следующее для людей в Бразилии www.example.com/br/whwhat_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 Ответ

1 голос
/ 27 октября 2011

Есть три проблемы с вашими правилами.

Прежде всего, порядок правил. Первое правило будет соответствовать любому, заканчивающемуся /index.html, и оно выполнит перенаправление. Это (правильно) помечено как окончательное правило (флаг L). Из-за этого второе правило никогда не будет выполнено. Если вы добавите правило br перед общим правилом, оно будет сначала проверено, и, если оно совпадет, произойдет перенаправление.

Вторая проблема - это регулярное выражение вашего второго правила. Он содержит окружность ^ на полпути от выражения. Обводное слово означает начало строки , которое, очевидно, никогда не встречается в середине строки. Снятие обходного кольца исправит это.

Третья проблема заключается в том, что вы разрешаете символы перед частью /br/ вашего URL (имея в своем выражении (.*). Согласно вашему описанию, вам это на самом деле не нужно.

Подведение итогов:

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]
...