2018-01-13 13:35:22 2895次浏览 3条回答 0 悬赏 20 金钱

yii2框架的advance版,框架开启了URL美化:

'urlManager' => [
    'enablePrettyUrl' => true,
    'showScriptName' => false,
    'rules'=>[
        "<controller:\w+>/<id:\d+>"=>"<controller>/view",
        "<controller:\w+>/<action:\w+>"=>"<controller>/<action>"    
    ],
],

使用的apache服务器,项目backend目录的web下配置.htaccess:
原来的配置是http访问的方式,可以正常访问:

Options +FollowSymlinks
IndexIgnore */*
RewriteEngine On

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

RewriteRule \.svn\/ /404.html
RewriteRule \.git\/ /404.html

加了阿里云的免费ssl证书后,修改为如下后访问跳转到https了却是404:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{HTTPS} !=on
    RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    # BEGIN WordPress
    RewriteRule ^index\.php$ - [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]
</IfModule>

网上找了好多资料,求教各位大神怎么解决,不胜感激

补充于 2018-01-15 15:01
ssl证书配置是:**
   Listen 443

   <VirtualHost *:443>
        DocumentRoot "C:\WWW\demo1\backend\web"
        ServerName test.ssl1.com
        ServerAlias test.ssl1.com
        <Directory "C:\WWW\demo1\backend\web">
          Options FollowSymLinks ExecCGI
          AllowOverride All
          Order allow,deny
          Allow from all
          Require all granted
        </Directory>

    SSLEngine on
    SSLProtocol all -SSLv2 -SSLv3
    SSLCipherSuite         HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
    SSLHonorCipherOrder on

    SSLCertificateFile "C:\Program Files\Apache\cert\ssl1\public.pem"
    SSLCertificateKeyFile "C:\Program Files\Apache\cert\ssl1\214389064350038.key"
    SSLCertificateChainFile "C:\Program Files\Apache\cert\ssl1\chain.pem"
</VirtualHost>
补充于 2018-01-17 12:15
web目录下的.htaccsee完整配置,不论是一级域名还是二级域名都可以访问,已经经过测试:
Options +FollowSymlinks
IndexIgnore */*
RewriteEngine On

RewriteCond %{SERVER_PORT} 80
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R,L]

RewriteCond %{SERVER_PORT} !^443$ 
RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]

# if a directory or a file exists, use it directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# otherwise forward it to index.php
RewriteRule . index.php

RewriteRule \.svn\/ /404.html
RewriteRule \.git\/ /404.html

最佳答案

  • 昕风 发布于 2018-01-16 10:59 举报
    RewriteEngine On RewriteBase / RewriteCond %{HTTPS} !=on RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] # BEGIN WordPress RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php [L,E=PATH_INFO:$1]
    觉得很赞
  • 回答于 2018-01-14 21:54 举报

    应该是写在配置文件里面弄吧

    server { listen 80; server_name jcwxcc.com www.jcwxcc.com; rewrite ^(.*) https://www.jcwxcc.com$1 permanent; # abc.com对应修改为您自已的域名 }

    nginx 的 供参考

    2 条回复
    回复于 2018-01-15 15:08 回复

    我把问题补充了一下,后来把web下的.htaccess的配置改成

    RewriteCond %{SERVER_PORT} 80 
    RewriteRule ^(.*)$ https://zhanxiang.okcaiyi.com/$1 [R=301,L]
    RewriteCond %{SERVER_PORT} !^443$
    RewriteRule (.*) https://%{SERVER_NAME}/$1 [R]
    

    是404

    回复于 2018-01-16 10:54 回复

    把 RewriteRule .svn\/ /404.html 这两句去掉或者改成
    RewriteRule ^(.svn\/)$ /index.html [R=403,L]
    这个应该是403不是404

  • 回答于 2018-01-15 09:38 举报

    还要注意当运行一个 HTTPS 服务器时,需要添加 fastcgi_param HTTPS on; 一行, 这样 Yii 才能正确地判断连接是否安全。
    这是手册里的一句话对你应该有用

    2 条回复
    回复于 2018-01-15 15:09 回复

    这个fastcgi_param HTTPS on是加载.htaccess里面么?

您需要登录后才可以回答。登录 | 立即注册
三亩地
见习主管

三亩地

注册时间:2017-06-08
最后登录:2018-01-25
在线时长:17小时5分
  • 粉丝3
  • 金钱320
  • 威望0
  • 积分490

热门问题