mod_rewrite на подстроке в URL - PullRequest
       12

mod_rewrite на подстроке в URL

0 голосов
/ 02 августа 2010

Я использую HTTPS на своем сайте, используя mod_rewrite, но я хочу изменить это на HTTP для любого URL с подстрокой com_bookmangement в URL.

So

http://www.example.com/index.php?option=com_content&view=article&id=85&Itemid=140

будет направлено на

https://www.example.com/index.php??option=com_content&view=article&id=85&Itemid=140

НО

https://www.example.com/index.php?option=com_bookmanagement&controller=localbooks&Itemid=216

будет направлено на

http://www.example.com/index.php?option=com_bookmanagement&controller=localbooks&Itemid=216

Я пробовал это без успеха:

#rewrite everything apart from com_bookmanagement to HTTPS
RewriteCond %{SERVER_PORT} !443
RewriteCond %{REQUEST_URI} !com_bookmanagement=
RewriteRule ^(.*)$ https://www.example.com/$1 [R=301,L]

#rewrite vouchers views to http
#RewriteCond %{server_port} 443
RewriteCond %{REQUEST_URI} ^com_bookmanagement=
RewriteRule ^/(.*)$ http://www.example.com/$1 [R=301,L]

Есть идеи?

Ответы [ 2 ]

1 голос
/ 02 августа 2010

Если вы используете ^com_bookmanagement=, оно будет совпадать только в том случае, если в начале строки появится com_bookmanagement=.Попробуйте без ^ и =.Или что бы я использовал:

#rewrite everything apart from com_bookmanagement to HTTPS
RewriteCond %{HTTPS} !=on
RewriteCond %{QUERY_STRING} !(^|&)option=com_bookmanagement(&|$)
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

#rewrite vouchers views to http
RewriteCond %{HTTPS} !=off
RewriteCond %{QUERY_STRING} (^|&)option=com_bookmanagement(&|$)
RewriteRule ^ http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
0 голосов
/ 02 августа 2010

Условие для QUERY_STRING вместо REQUEST_URI:

RewriteCond %{SERVER_PORT} !443
RewriteCond %{QUERY_STRING} !com_bookmanagement
RewriteRule ^(.*)$ https://www.mysite.com/$1 [R=301,L]
RewriteCond %{QUERY_STRING} com_bookmanagement
RewriteRule ^/(.*)$ http://www.mysite.com/$1 [R=301,L]

Подробнее о перезаписи URI со строками запроса здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...