apache 2.2 mod_rewrite 将一些 URL 重定向到 https,并强制其他 URL 使用 http

apache 2.2 mod_rewrite 将一些 URL 重定向到 https,并强制其他 URL 使用 http

我的页面位于共享主机上。一般来说,可以使用 http 和 https 访问网站。该页面提供广告,但大多数广告无法使用 https 访问,因此我只希望管理部分可以通过 https 访问。

我想要的是:

http://myurl.com/auth -> https://myurl.com/auth
http://myurl.com/admin -> https://myurl.com/admin

https://myurl.com/allotherstuff -> http://myurl.com/allotherstuf

基本上,所有对 auth 和 admit 的请求都应重定向以使用 ssl。对其他网站的请求应从 https 重定向到 http(如果页面是使用 https 请求的)。

我尝试了以下 .htaccess 文件,这使得“auth”和“admin”无法访问(重定向太多)。

<IfModule mod_rewrite.c>    
    RewriteEngine On

#Redirect other sites to http
    RewriteCond %{HTTPS} =on
    RewriteCond %{REQUEST_URI} !^/?auth.*$
    RewriteCond %{REQUEST_URI} !^/?admin.*$
    RewriteRule ^/?(.*) http://%{SERVER_NAME}/$1 [R,L]


#Redirect auth and admin to https

    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?auth/(.*) https://%{SERVER_NAME}/auth/$1 [R,L]

    RewriteCond %{HTTPS} !=on
    RewriteRule ^/?admin/(.*) https://%{SERVER_NAME}/admin/$1 [R,L]

</IfModule>

是否可以使用 mod_rewrite 来实现这一点?

答案1

好的,如果要将 http 转换为 https,请安装自签名证书

答案2

您可以在 .htaccess 文件中添加此代码

      <IfModule mod_rewrite.c> 
         RewriteEngine on     
        RewriteCond %{HTTP_HOST} ^tset.com/tset$ [NC]  
        RewriteRule ^/?$ "https://test.com/test" [R=301,L]
       </IfModule>

相关内容