сложный mod_rewrite. Любая идея? - PullRequest
0 голосов
/ 09 июля 2010

Я хочу: - переключиться с http на https, если используется http - перенаправить субдомен в индекс? o = субдомен, кроме www - перенаправление подкаталога в индекс? u = пользователь

Пример: http://www.mydomain.com будет перенаправлен на https://www.mydomain.com

http://subdomain.mydomain.com будет перенаправлен на https://www.mydomain.com/index?o=subdomain

https://subdomain.mydomain.com будет перенаправлен на https://www.mydomain.com/index?o=subdomain

http://subdomain.mydomain.com/user будет перенаправлен на https://www.mydomain.com/index?o=subdomain&u=user

https://subdomain.mydomain.com/user будет перенаправлен на https://www.mydomain.com/index?o=subdomain&u=user

Является ли mod_Rewrite лучшим для этого? Есть идеи?

Заранее спасибо

1 Ответ

1 голос
/ 09 июля 2010

У меня нет времени, чтобы проверить это прямо сейчас, но вы можете попробовать это и посмотреть, работает ли это.Возможно, что-то пойдет не так, поэтому, если у вас возникнут проблемы, я с радостью разберусь позже.Кроме того, я думаю, что я охватил все, что вы хотели сделать, но дайте мне знать, если я что-то пропустил.

RewriteEngine On

# Force redirect to HTTPS
RewriteCond %{HTTPS} !=on
RewriteRule ^.*$ https://%{HTTP_HOST}/$0 [R=301,L]

Редактировать: Я обновил набор правил ниже.Я подумал о вашем вопросе, и не будете ли у вас проблемы с обслуживанием ваших поддоменов по TLS / SSL?Кроме того, одно из следующего должно делать то, что вы хотите (без ошибок на этот раз, я надеюсь):

Если вы хотели внутреннего перенаправления:

RewriteCond %{HTTP_HOST}    !=mydomain.com
RewriteCond %{HTTP_HOST}    !^www
RewriteCond %{REQUEST_URI}  !^/index
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^([^\.]+)[^/]*/([^/]+)?
RewriteCond %1&u=%2          ^([^&]+)(&u=.+)?
RewriteRule ^.*$ /index?o=%1%2

Если вы хотели внешнего перенаправления:

RewriteCond %{HTTP_HOST}    !=mydomain.com
RewriteCond %{HTTP_HOST}    !^www
RewriteCond %{REQUEST_URI}  !^/index
RewriteCond %{HTTP_HOST}%{REQUEST_URI} ^([^\.]+)[^/]*/([^/]+)?
RewriteCond %1&u=%2          ^([^&]+)(&u=.+)?
RewriteRule ^.*$ https://www.mydomain.com/index?o=%1%2 [R=301,L]
...