apache中的http到http重定向虚拟主机

apache中的http到http重定向虚拟主机,apache,.htaccess,https,laravel,virtualhost,Apache,.htaccess,Https,Laravel,Virtualhost,Hi-im使用apache 2.4和PHP 5.5在CentOS 6.5中配置服务器 我安装了SSL证书,一切正常 在另一台服务器上,我对htaccess文件执行了http到https重定向。 我在我的新服务器上测试了它,但没有工作,以下是我的配置: 我的.htaccess: <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews

Hi-im使用apache 2.4和PHP 5.5在CentOS 6.5中配置服务器 我安装了SSL证书,一切正常

在另一台服务器上,我对htaccess文件执行了http到https重定向。 我在我的新服务器上测试了它,但没有工作,以下是我的配置:

我的.htaccess:

    <IfModule mod_rewrite.c>
        <IfModule mod_negotiation.c>
            Options -MultiViews
        </IfModule>

        RewriteEngine On

        # Redirect Trailing Slashes...
        RewriteRule ^(.*)/$ /$1 [L,R=301]

        # Handle Front Controller...
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond   %{REQUEST_URI}  !/phpmyadmin/.*
        RewriteCond   %{REQUEST_URI}  !/phpMyAdmin/.*
        RewriteRule ^ index.php [L]
    </IfModule>

选项-多视图
重新启动发动机
#重定向尾部斜杠。。。
重写规则^(.*)/$/$1[L,R=301]
#处理前控制器。。。
重写cond%{REQUEST_FILENAME}-D
重写cond%{REQUEST_FILENAME}-F
重写cond%{REQUEST_URI}/phpmyadmin/*
重写cond%{REQUEST_URI}/phpMyAdmin/*
重写规则^index.php[L]
我的虚拟主机文件:

    NameVirtualHost *:80

    <VirtualHost *:80>
            ServerName subdomain.domain.com
            ServerAlias www.subdomain.domain.com
            DocumentRoot /var/www/laravel-project-namel/public

           <Directory /var/www/laravel-project-namel/public>
              <IfModule mod_rewrite.c>
              Options -MultiViews
              RewriteEngine On

                RewriteCond %{HTTP_HOST} ^www\.(.*)
                RewriteRule ^.*$ https://%1/$1 [R=301,L]


              RewriteCond %{REQUEST_FILENAME} !-f
              RewriteRule ^ index.php [L]


           </IfModule>
        </Directory>
    </VirtualHost>

    NameVirtualHost *:443

    <VirtualHost *:443>
            SSLEngine on
            SSLProtocol all -SSLv2
            SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
            SSLCertificateFile /etc/pki/tls/certs/cert-valido_clientes_databyte_cl.crt
            SSLCertificateKeyFile /etc/pki/tls/certs/cert-valido-private.key
            SSLCertificateChainFile /etc/pki/tls/certs/cert-valido_clientes_databyte_cl.pem
            ServerName subdomain.domain.com
            ServerAlias www.subdomain.domain.com
            DocumentRoot /var/www/laravel-project-namel/public

           <Directory /var/www/laravel-project-namel/public>
              <IfModule mod_rewrite.c>
              Options -MultiViews
              RewriteEngine On
              RewriteCond %{REQUEST_FILENAME} !-f
             RewriteRule ^ index.php [L]
           </IfModule>
        </Directory>
    </VirtualHost>
NameVirtualHost*:80
ServerName subdomain.domain.com
ServerAlias www.subdomain.domain.com
DocumentRoot/var/www/laravel项目名称/public
选项-多视图
重新启动发动机
重写cond%{HTTP_HOST}^www\(.*)
重写规则^.*$https://%1/$1[R=301,L]
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
名称虚拟主机*:443
斯伦金安
SSLProtocol all-SSLv2
SSLCipherSuite全部:!ADH:!出口:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
SSLCertificateFile/etc/pki/tls/certs/cert-valido\u clients\u databyte\u cl.crt
SSLCertificateKeyFile/etc/pki/tls/certs/cert-valido-private.key
SSLCertificateChainFile/etc/pki/tls/certs/cert-valido\u clients\u databyte\u cl.pem
ServerName subdomain.domain.com
ServerAlias www.subdomain.domain.com
DocumentRoot/var/www/laravel项目名称/public
选项-多视图
重新启动发动机
重写cond%{REQUEST_FILENAME}-F
重写规则^index.php[L]
我将域和文件夹替换为通用名称,但所有其他名称都是正确的。 (对我的英语感到抱歉)


我确实搜索并测试了我找到的每个解决方案,但我的站点拒绝重定向。

问题是您没有以模式捕获URI并使用
$1,%1
作为反向引用

在root.htaccess中尝试此规则作为第一条规则:

RewriteCond %{HTTP_HOST} ^www\. [OR]
RewriteCond %{HTTPS} off
RewriteRule ^ https://domain.com%{REQUEST_URI} [R=301,L,NE]

没有工作,但我可以看到我是否将www.放在子域之前,重定向到没有www.和https的子域!!!,但是没有你的代码就可以了。现在我需要不带www.to的重定向。你是说你想从URL中删除www,而不想要https,或者两者都想要?你能澄清一下吗?我需要两者,删除www并重定向到httpsok,对不起,我没有“AllowOverride All”,我把它放在我的htaccess配置中,现在我需要两个规则,删除www并重定向https。