为什么我的 htaccess 不能正确重写

Why does my htaccess not rewrite properly

我的 htaccess 文件有问题,无法确定是我的配置问题,还是服务器缓存之类的东西弄乱了我的 URLs。

我的文件如下

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
RewriteRule ^(.*)$ http://%1/ [R=301,L]

RewriteCond %{HTTP_HOST} ^website.com$
RewriteCond %{HTTPS} off
RewriteRule (.*) https://website.com/ [R=301,L]

RewriteRule ^([a-z]+)\/?$ .php [NC]

第一个规则是将 www 移动到非 www,它有效。

第二个规则是将http 移动到https,它也有效。

第三条规则是让URL/anyFile呼唤anyFile.php,但要保持可爱URL.

问题是它调用 anyFile.html,而不是 PHP,如果我删除所说的 HTML 文件,那么我会得到 404。

是的,它可以在 URL 中输入 anyFile.php,但我不想在 URL 中输入 .php。 如果它不够明显,它应该适用于任何文件名,而不仅仅是一个文件名。

非常感谢任何帮助。

我最近也在学习htaccess,所以我还是个新手,但我会写

RewriteRule ^([a-z]+)\/?$ helloWorld.php [NC]

将其重定向到 helloWorld.php 文件。

是一个get参数。

用此代码替换您的 .htaccess 规则:

Options -MultiViews
RewriteEngine On
RewriteBase /

# single rule for http->https and www removal
RewriteCond %{HTTPS} off [OR]
RewriteCond %{HTTP_HOST} ^www\. [NC]
RewriteRule ^(.*)$ https://website.com/ [R=301,L]

# hide .php extension
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^([a-z]+)/?$ .php [NC,L]