【问题标题】:.htaccess WildCard SSL for sub-domain.htaccess 通配符 SSL 用于子域
【发布时间】:2014-04-01 12:37:29
【问题描述】:

我为我的域和子域设置了 .htaccess 文件。如果我手动编写 https,那么两者都可以正常工作,但我想强制这样没有 https 就没有人可以打开。

我还想要带有主域的 WWW 和没有 WWW 的子域。下面是我的 .htaccess 代码,

RewriteEngine On 
RewriteCond %{HTTP_HOST} ^app.domain.com$ 
RewriteCond %{REQUEST_URI} !^/app/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /app/$1 
RewriteCond %{HTTP_HOST} ^app.domain.com$ 
RewriteRule ^(/)?$ app/index.php [L]

如果用户输入www.domain.com/app/,是否可以将用户重定向到子域

【问题讨论】:

    标签: .htaccess mod-rewrite ssl wildcard-subdomain


    【解决方案1】:

    您可以插入以下两条规则:

    RewriteEngine On
    
    # force https
    RewriteCond %{HTTPS} off
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
    
    # force www for main site
    RewriteCond %{HTTP_HOST} ^domain\.com$ [NC]
    RewriteRule ^ https://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L,NE]
    
    # remove www for app site
    RewriteCond %{HTTP_HOST} ^www\.(app\.domain\.com)$ [NC]
    RewriteRule ^ https://%1%{REQUEST_URI} [R=301,L,NE]
    
    RewriteCond %{THE_REQUEST} \s/+app[/\s] [NC]
    RewriteRule ^ / [R=301,L]
    
    RewriteCond %{HTTP_HOST} ^app.domain.com$ 
    RewriteCond %{REQUEST_URI} !^/app/ 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule ^(.*)$ /app/$1 
    RewriteCond %{HTTP_HOST} ^app.domain.com$ 
    RewriteRule ^(/)?$ app/index.php [L]
    

    【讨论】:

    • 在我的代码中添加这两条规则的位置。你能按照我在问题中提到的代码来安排吗
    • 两者都可以正常工作,但如果我添加 www.app.domain.com 则它不会重定向到 app.domain.com。也可以将www.domain.com/app/重定向到app.domain.com
    • 非常感谢。您的代码运行良好,但我仍有一个问题。它不会阻止访问 www.domain.com/app/ 。仍然当我输入它运行此页面https://www.domain.com/app/login.php
    • 您能否检查我的这个问题http://stackoverflow.com/questions/22837602/htaccess-url-rewrite-for-sub-domain,我尝试了很多但不知道为什么我的规则不起作用。提前致谢
    猜你喜欢
    • 2012-11-12
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 2012-08-20
    • 2016-10-21
    • 1970-01-01
    • 2014-09-06
    • 2018-05-11
    相关资源
    最近更新 更多