【发布时间】:2019-07-10 22:45:35
【问题描述】:
我收到 500 Internal Server Error 而不是:404 - Not Found 每当我为我的网站键入不存在的页面地址时。
我最好的猜测与我的 .htaccess 设置有关:
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://www.example.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ $1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ $1.php [L,QSA]
ErrorDocument 404 /404.php
我的 .htaccess 检查并将所有 url 重定向到 https://www. 表单。它还负责从所有页面中隐藏 .php 扩展名。
我花了很长时间才想出上面的代码,现在我真的很害怕改变任何东西,因为我不太擅长 .htaccess 语法。
任何帮助或建议将不胜感激!
【问题讨论】:
-
@anubhava 是的
-
@Acidon 我认为是因为这条规则
RewriteRule ^(.*)$ $1.php [L,QSA]表示如果请求的URI 既不是文件也不是目录,则转到与第一组匹配的$1.php。它试图找到但没有得到,所以可能是 500 服务器错误,因为根据请求 URI,您不能拥有这样的动态文件。你检查过日志吗?
标签: .htaccess http-status-code-404