SSL .htaccess - 简单 Q

SSL .htaccess - Simple Q

我真的很讨厌这个文件...我只花了 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/ [R,L]

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

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

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

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

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

我也在同时尝试强制它不使用 www(所以如果他们这样做应该重定向到非 WWW url) 非常感谢你!!!!!!!!!!!!!

Before the SSL I had this code below and it worked (but not anymore):

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

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

改为尝试以下操作,在您的 HTTP 到 HTTPS 重定向后

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

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

或者,如果您不进行任何其他 URL 重写,您可以只启用多视图。例如,在文件的顶部:

Options +MultiViews

这使用 mod_negotiation 基本上为 一切!

启用无扩展名 URLs