codeigniter - 仅在 https 上出现禁止 403 错误,但 url http 工作正常

标签 codeigniter ssl amazon-ec2 http-status-code-403 apache2.4

在我的服务器上,我的根目录中有 WordPress 站点,Codeigniter 项目作为 WordPress 中的子文件夹,并且我为 Codeigniter 项目创建了子域。两者都可以在没有 SSL 的情况下正常工作现在我想在子域项目上应用 SSL,同时在这个我面临的问题上应用 ssl。当我使用 https://subdomain.example.com 打开网站时它给了我禁止的 403 错误。

以下是我在 apache 上托管的网站的示例。我有我的根 WordPress 项目的符号链接(symbolic link)。

http://example.com - 工作正常 - root 上的 WordPress 项目

http://subdomain.example.com - 工作正常 - wordpress 项目文件夹下的 codeigniter 项目

https://subdomain.example.com - 出现禁止错误

以下是我的apache ssl虚拟主机文件数据。

<IfModule mod_ssl.c>
        <VirtualHost *:443>
                ServerAlias subdomain.example.com
                ServerName subdomain.example.com
                DocumentRoot /var/www/html/wordpress

                ErrorLog ${APACHE_LOG_DIR}/error.log
                CustomLog ${APACHE_LOG_DIR}/access.log combined

                SSLEngine on
                SSLCertificateFile      /home/ubuntu/wordpress/cdq/my-ssl-certifications/fc1d71b08ac8aab1.crt
                SSLCertificateKeyFile /home/ubuntu/wordpress/cdq/my-ssl-certifications/host.key
                SSLCertificateChainFile /home/ubuntu/wordpress/cdq/my-ssl-certifications/gd_bundle-g2-g1.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
                                SSLOptions +StdEnvVars
                </FilesMatch>
                <Directory /usr/lib/cgi-bin>
                                SSLOptions +StdEnvVars
                </Directory>
                <Directory /var/www/html/wordpress>
                        Options Indexes FollowSymLinks MultiViews
                        AllowOverride All
                        Require all granted
                </Directory>



        </VirtualHost>
</IfModule>

wordpress项目的htaccess

RewriteEngine On

RewriteCond %{HTTP_HOST} subdomain.example.com$
RewriteCond %{REQUEST_URI} !^/subfolder
RewriteRule ^(.*)$ /subfolder/$1 [L] 

RewriteBase /
RewriteRule ^index\.php$ - [L]

# add a trailing slash to /wp-admin
RewriteRule ^wp-admin$ wp-admin/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]

子文件夹项目的htaccess

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]

RewriteRule ^(.*)$ /index.php/$1 [L]

最佳答案

您的配置中存在一些与权限相关的问题:

<Directory /var/www/html/wordpress>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride All
                    Require all granted
</Directory>

它需要授予所有文件。所以你所要做的就是让它像:

<Directory "/var/www/html/wordpress">
     AllowOverride All
</Directory>

P.S. 我修改了您的文件,您可以像这样使用它:

<IfModule mod_ssl.c>
<VirtualHost _default_:443>
    ServerAlias subdomain.example.com
    ServerName subdomain.example.com
    DocumentRoot /var/www/html/wordpress
<Directory "/var/www/html/wordpress">
   AllowOverride All
</Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
    SSLEngine on
            SSLCertificateFile      /home/ubuntu/wordpress/cdq/my-ssl-certifications/fc1d71b08ac8aab1.crt
            SSLCertificateKeyFile /home/ubuntu/wordpress/cdq/my-ssl-certifications/host.key
            SSLCertificateChainFile /home/ubuntu/wordpress/cdq/my-ssl-certifications/gd_bundle-g2-g1.crt
            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
            </FilesMatch>
            <Directory /usr/lib/cgi-bin>
                SSLOptions +StdEnvVars
            </Directory>
    BrowserMatch "MSIE [2-6]" \
                    nokeepalive ssl-unclean-shutdown \
                    downgrade-1.0 force-response-1.0
    BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown
</VirtualHost>

没有重大变化。我只是根据我的工作文件修改它。希望对您有帮助。

关于codeigniter - 仅在 https 上出现禁止 403 错误,但 url http 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45325416/

相关文章:

php - 在 Codeigniter 中转义查询的正确方法

apache - 404 页面上的 SSL https 错误,但其他页面在启用重定向的情况下工作正常

android - 如何使用带有 Volley 的 SSL 证书获取 SSLSocketFactory

ssl - 在 SSL 握手中,数据是否在客户端 pre-master 交换之前被加密?

amazon-web-services - 让 jenkins 启动一个 EC2 实例并终止它

java - 从 EC2 访问 kinesis 时出现问题

php - 显示来自两个表的数据 - codeigniter 中的一对多关系

php - MySql 整个数据库(表和实体)与备份一起删除。有没有办法重新创建它。

php - 在 codeigniter 中为 View 加载代码片段

amazon-web-services - 如何在 ec2 元数据中查找安全组 ID?