【问题标题】:SSL .htaccess - Simple QSSL .htaccess - 简单 Q
【发布时间】:2021-02-25 22:13:21
【问题描述】:

我真的很讨厌这个文件...我花了 6.5 小时试图弄清楚这一点,而我的 ADHD 阅读障碍是不可能的! 我有一个为 SSL 购买的域(目前我必须等待 WWW 的 ssl 启动,但现在没有 WWW 的域可以工作,例如:

https://tomas.com

我在 root 中的 .htaccess 目前是:

RewriteEngine On
RewriteCond %{HTTP_HOST} tomas\.com [NC]
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://tomas.com/$1 [R,L]

上面的代码确实激活了 SSL,这很好。问题是,我在根域中有一些文件,但其中一个名为:

hello.php(位于:“tomas.com/hello.php”)

如果我去: http://tomas.com/hello 我希望它显示该文件(并且在地址栏中应该显示:“http://tomas.com/hello”)。 在 SSL 之前,我在下面有这段代码并且它可以工作(但不再):

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

知道整个 .htaccess 应该是什么样子吗? :/

我也在尝试强制它不使用 www(所以如果他们这样做,应该将其重定向到非 WWW url) 提前谢谢你!!!!!!!!!!!!

【问题讨论】:

  • “我真的很讨厌这个文件...”:简单,不要使用它。将您的配置放在主要的 Apache 配置文件中。这提高了安全性、性能和简单性(更清晰的配置)。当然,根据您网站的托管位置和方式,您可能无法访问 Apache 主配置文件。

标签: .htaccess ssl ssl-certificate


【解决方案1】:

在 SSL 之前,我在下面有这段代码并且它有效(但不再有效):

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

不知道它之前是如何“工作”的,它本身并不完整,并且只是附加一个 .php 扩展名。你需要一些东西来防止重写循环,因为hello.php 也匹配模式^([^/]*)/?(.*)$

请尝试以下操作,您的 HTTP 到 HTTPS 重定向之后。

RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]

这首先检查具有.php 文件扩展名的文件在内部重写之前是否存在。

或者,如果您不进行任何其他 URL 重写,则可以改为启用 MultiViews。例如,在文件的顶部:

Options +MultiViews

这使用 mod_negotiation 基本上为一切启用无扩展 URL!

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2013-07-04
  • 1970-01-01
  • 1970-01-01
  • 2011-03-14
  • 2011-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多