我们在运行Apache的Ubuntu 14服务器中部署了一个网站。该网站使用SSL证书(因此您可以通过https访问)并在没有https的情况下对所有传入请求进行重定向。
好的,所以网站在桌面浏览器和移动浏览器中按预期工作,但是,当用户点击链接(来自Facebook iOS应用程序)时,应用内浏览器会尝试打开网站并返回像“链接不起作用,再试一次”这样的消息(不是英文中的确切消息)。
经过大量的研究后,我仍然不清楚这会发生什么(只是在google上发现了几个未解决的案例),所以我首先看看服务器配置。
apache配置(IP和域是样本):
<VirtualHost 200.200.200.200:80>
ServerName www.domain.com
Redirect permanent / https://www.domain.com/
</VirtualHost>
<VirtualHost domain.com:80>
ServerName www.domain.com
Redirect permanent / https://www.domain.com/
</VirtualHost>
<VirtualHost www.domain.com:443>
ServerName www.domain.com
ServerAlias domain.com
SSLEngine on
SSLCertificateFile /home/ssl/www.domain.com.crt
SSLCertificateKeyFile /home/ssl/domain.com.key
ServerAdmin admin@domain.com
DocumentRoot /var/www/html
<Directory /var/www/html>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
.htaccess文件:
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]
之前的配置在所有浏览器中都能正常运行,加载Facebook iOS应用内浏览器时,它只是不加载(甚至不会加载到Apache访问日志)。
非常感谢帮助!提前感谢您的时间。
答案 0 :(得分:2)
在使用@CBoroe建议的SSL Checker分析网址后,我发现需要添加缺少的中间证书配置,因为我们正在使用Apache&lt; 2.4.8版本。
我们只需要添加 SSLCertificateChainFile /home/cert_ssl/intermediate.crt 指令。代码的最终SSL部分如下所示:
SSLEngine on
SSLCertificateFile /home/ssl/www.domain.com.crt
SSLCertificateKeyFile /home/ssl/domain.com.key
SSLCertificateChainFile /home/ssl/intermediate.crt
希望这可以帮助其他人解决此问题。完成此更改后,使用以下命令重启Apache:
service apache2 restart
一切都应该正常工作(您可以使用相同的SSL检查工具进行验证)。
谢谢你的时间!