【问题标题】:Allowing specific files to run over https允许特定文件通过 https 运行
【发布时间】:2014-09-01 22:06:08
【问题描述】:

我在服务器上设置了 SSL,但我几乎没有将它用于任何事情,因此我只是通过 .htaccess 将所有 https:// 重定向到 http://。最近我为我的 Facebook 粉丝专页创建了一个小应用程序,但遇到了几个问题,因为 Facebook 不再允许http://

问题:

如何让一个静态 HTML 文件使用 https:// 运行,而其余设置保持不变?

我目前在.htaccess 中使用的是以下内容

<IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /

 RewriteCond %{HTTPS} on [OR]
 RewriteCond %{HTTP:X-Forwarded-Proto} https [OR]
 RewriteCond %{SERVER_PORT} ^443$
 RewriteRule ^(.*)$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301,NE]

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-l
 RewriteRule ^(.*)$ index.php/$1 [QSA,L,NC]

</IfModule>  

【问题讨论】:

  • 你有什么问题?
  • 真正的问题是文件根本没有在 facebook 上打开。 IFrame 基本上是空的。
  • 有什么错误吗? SSL 证书是自签名的吗?你在 Firefox 上工作吗?也请阅读this
  • 不,一点也不,证书不是自烧的。我试过了,在firefox上可以,但是在Chrome、Opera等浏览器上不行。
  • 我可以向您发送我的 Facebook 应用程序的链接

标签: regex .htaccess http https


【解决方案1】:

是的。

在包含所有条件的第一个块中,添加一个条件以排除您的应用。例如:

RewriteCond %{REQUEST_URI} !facebook-app\.html [OR]

对于your_app_name,输入仅会出现在您要从重写中排除的应用的网址中的特定内容。该名称在 url 中出现的早或晚都没有关系,只需在条件中替换它即可。

【讨论】:

  • 我传递给 facebook 的网址是 mysite.net/facebook-app.html,所以我应该把它完整地放在那里吗?
  • 感谢它在除 Chrome 之外的所有浏览器上都有效。 iFrame 仍然没有显示,证书也在抱怨,但我认为这与我的 html 文件本身的内容有关,因此需要深入了解。
  • 很高兴听到它有帮助,亚历克斯。如果浏览器的行为不同,您可以确定它与 Apache 无关。许多浏览器维护一个重定向缓存,所以如果它之前是301 重定向(永久),您的浏览器会自动重定向您的请求,甚至无需询问您的服务器——这样更快。最好清除缓存等。让我​​知道我是否可以做其他事情。 :)
  • 我当然做到了,但是那个愚蠢的 chrome 总是让我很头疼 :)
  • 顺便问一下,如何将文件夹添加到保存图像的规则中,这些图像也必须通过 https://?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-28
  • 1970-01-01
相关资源
最近更新 更多