我想: - 如果使用http,则从http切换到https - 将子域重定向到索引?o =除www以外的子域 - 将子目录重定向到索引?u = user
示例: 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是最好的吗?有什么想法吗?
提前致谢
答案 0 :(得分:1)
我现在没有时间对它进行测试,但您可以尝试一下,看看它是否有效。某些事情可能会出现问题,所以如果你遇到问题,我会很乐意以后解决任何问题。另外,我认为我已经涵盖了你想做的所有事情,但如果我遗漏了一些东西,请告诉我。
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]