2014-01-07 2 views
2

Я просмотрел множество ответов здесь и в другом месте, но не нашел точно, что мне нужно. Я работаю с старым сайтом Joomla 1.5, а не с помощью SEF по конкретному запросу владельцев. Но я хочу, чтобы все не-www-запросы были переписаны на www, кроме определенных страниц формы/оплаты..htaccess Переписать не-www на www, кроме определенных динамических страниц

Example: 
http://domain.com/index.php?option=com_content&view=article&id=43&Itemid=11 
becomes 
http://www.domain.com/index.php?option=com_content&view=article&id=43&Itemid=11 
except a payment page 
http://domain.com/index.php?option=com_rsform&formId=3 
or 
http://www.domain.com/index.php?option=com_rsform&formId=3 
becomes 
https://domain.com/index.php?option=com_rsform&formId=3 

Я использую этот код:

RewriteEngine On 

########## Begin - Redirect non-https non-www to www 
RewriteCond %{HTTPS} !=on 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=302,L] 
########## End - Redirect non-www to www 

Это получает меня там до тех пор, как они торчат с моей ссылкой на страницу оплаты, но я хотел бы, чтобы одурачить доказательство его. И лучше понять, как это сделать. Я устал, может быть, сотню разных правил. Я пытаюсь изучить проблемы с регулярным выражением, но не могу получить его для моего клиента.

Я могу сделать с ним работу в любой форме, поэтому «option = com_rsform» всегда будет в URL-адресе. Я не знаю, обрабатывается ли это как строка или переменная при создании условия. Во всяком случае, я бы очень признателен за предлагаемое решение.

ответ

2

Попробуйте этот код:

RewriteEngine On 

########## Begin - Redirect non-https non-www to www 
RewriteCond %{HTTPS} off 
RewriteCond %{HTTP_HOST} !^www\. [NC] 
RewriteCond %{QUERY_STRING} !^option=com_rsform&formId=3 [NC] 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=302,L] 
########## End - Redirect non-www to www 

# payment URL 
RewriteCond %{HTTPS} off 
RewriteCond %{QUERY_STRING} ^option=com_rsform&formId=3 [NC] 
RewriteRule ^(.*)$ https://domain.com/$1 [R=302,L] 
+0

Спасибо за удивительный быстрый ответ! В этом случае я должен добавить каждую форму в оба раздела? – integris

+1

Да, оба правила должны будут проверить наличие и отсутствие этой строки запроса. Также убедитесь, что эти правила являются первыми правилами. Теперь выходите в автономный режим. – anubhava

+0

ОК, но это не работает для последнего случая в моем вопросе: https://www.domain.com/index.php?option=com_rsform&formId=3 должно стать https://domain.com/. – integris

Смежные вопросы