.htaccess вопросы

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

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 ответы

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

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

Вторая проблема - это регулярное выражение для вашего второго правила. Он содержит circumflex ^ наполовину выражение. Обводной означает начало строки , которая, очевидно, никогда не встречается в середине строки. Удаление обводки зафиксирует это.

Третья проблема заключается в том, что вы разрешаете символы перед частью кода /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]
1
добавлено
Пожалуйста ;-)
добавлено автор Ondergetekende, источник
Керт, ответ, поставил меня на правильный путь. Большое спасибо!
добавлено автор Hugo, источник