【问题标题】:Mod_Rewrite Force HTTP On All Files Except OneMod_Rewrite 对除一个文件之外的所有文件强制使用 HTTP
【发布时间】:2010-11-14 01:51:53
【问题描述】:

抱歉,之前有人问过这个问题,但我找不到。 我有一个文件夹,当我访问它时会同时加载 HTTPS 和 HTTP。

我希望该文件夹中的所有文件都以 HTTP 加载,但一个文件除外。 我在 HTTPS 中需要的文件是:login.php,这个文件夹称为“论坛”。 如果有帮助:文件夹中的所有文件都是 *.php。

我正在尝试以下方式:

#RewriteCond %{SERVER_PORT} !^443$
#RewriteRule ^/login.php$ - [L]

#RewriteCond %{SERVER_PORT} ^443$
#RewriteRule ^(/login.php) $ https://%{HTTP_HOST}/$1 [QSA,NC,R,L]

#RewriteCond %{SERVER_PORT} !^443$
#RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1 [QSA,NC,R,L]

在 mod_rewrite 方面我有点业余,所以如果以上内容完全关闭,请原谅我。 此外,如果您发布解决方案,如果您发布并附上解释,我将不胜感激,这样我就可以真正了解它是如何工作的。

提前致谢! 大卫

【问题讨论】:

  • 应该假设您在“尝试”时从未评论过这些行吗?
  • 是的,他们在尝试时没有注释。抱歉,当我看到它不起作用时,我只是在禁用它们后从 conf 文件中复制了这些行。

标签: apache http mod-rewrite ssl https


【解决方案1】:

试试这些规则:

RewriteCond %{SERVER_PORT} !=443
RewriteRule ^login\.php$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteCond %{SERVER_PORT} !=80
RewriteRule !^login\.php$ http://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

【讨论】:

  • 您好秋葵,感谢您的意见。但是,与上述解决方案中发生的问题相同。无论是否启用了 SEO Mod。还有其他想法吗?干杯
  • 您是把这些规则放在其他规则之前还是之后?如果之前没有,那就去做吧。
【解决方案2】:

试试这个:

 Options +FollowSymLinks
 RewriteEngine On


 # port 443 traffic to http://, except login.php
 RewriteCond %{SERVER_PORT} ^443$
 RewriteCond %{REQUEST_URI} !^/login\.php$ [NC]
 RewriteRule .* http://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

 # port 80 traffic for login.php to https://
 RewriteCond %{SERVER_PORT} ^80$
 RewriteCond %{REQUEST_URI} ^/login\.php$ [NC]
 RewriteRule .* https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]

【讨论】:

  • 我现在正在执行迁移,所以我会在完成后立即尝试。谢谢!
  • 似乎正在发生一些事情,但它并不完全有效。现在论坛仍然在 HTTPS 下加载,这意味着 index.php 可以,但是一旦我单击论坛链接,我就会收到一个错误,它不“存在”。如果我进入 HTTP,它加载得很好。这可能与我安装的 SEO Mod 有关?尽管如此,搜索引擎优化规则在这些规则之下。所以应该先阅读它们吧?如果您想亲自看看发生了什么:http(s)://www.redbid.com/forum/。干杯
  • 我不是 100% 确定我的答案是正确的,我很害怕。我对SEO Mod一无所知。我认为我给出的重写规则应该将除 /login.php 之外的任何页面的 https 流量重定向到 http。如果您可以发布服务器错误日志,我可能会提供帮助。
  • 是的,我现在看到了,它可以让我导航到论坛,但是一旦我点击打开论坛,我就会发现 404 未找到。看起来您正在使用的论坛脚本正在创建描述性 URL,可能使用了某种可能相互冲突的重写规则本身。 SEO Mod 是论坛脚本的依赖项吗?
  • 我已禁用 SEO Mod 并在配置中评论了 SEO 重写规则。尽管如此,该站点仍在 HTTPS 中加载。但是这次没有 404 错误。有什么想法吗?注意:我已经禁用了配置中的所有其他 mod_rewrite 规则,以测试这种情况并确保没有冲突。干杯!
猜你喜欢
  • 2017-03-28
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 2012-05-31
  • 2018-01-22
  • 1970-01-01
  • 1970-01-01
  • 2011-03-25
相关资源
最近更新 更多