.htaccess 返回500内部服务器错误,而不是:404-未找到
当我为我的站点键入一个不存在的页面地址时,我得到的是500个内部服务器错误,而不是:404-找不到 我猜这与我的.htaccess设置有关:.htaccess 返回500内部服务器错误,而不是:404-未找到,.htaccess,http-status-code-404,.htaccess,Http Status Code 404,当我为我的站点键入一个不存在的页面地址时,我得到的是500个内部服务器错误,而不是:404-找不到 我猜这与我的.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/$
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
My.htaccess检查所有URL并将其重定向到https://www.
表格。它还负责从所有页面隐藏.php扩展
我花了很长时间才想出上面的代码,现在我真的不敢更改任何东西,因为我不太擅长.htaccess语法
任何帮助或建议都将不胜感激 在这两条线之后:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
添加此行:
RewriteCond %{REQUEST_FILENAME}\.php -f
要确保在发送请求之前接受php
扩展名,请执行以下操作:
RewriteRule ^(.*)$ $1.php [L,QSA]
当您向任何目标发送不存在的请求时,请确保目标将正确管理此问题,否则服务器将给出错误消息
301
重定向(不利于SEO和效率).php
之前,必须检查是否存在.php
文件ErrorDocument 404 /404.php
RewriteEngine On
## add www and turn on https in same rule
RewriteCond %{HTTP_HOST} !^www\. [NC,OR]
RewriteCond %{HTTPS} !on
RewriteCond %{HTTP_HOST} ^(?:www\.)?(.+)$ [NC]
RewriteRule ^ https://www.%1%{REQUEST_URI} [R=301,L,NE]
# if not a directory and .php file is present then add .php extension
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.+?)/?$ $1.php [L]
@阿努巴瓦是的does@Acidon我认为这是因为这个规则
RewriteRule^(.*)$$1.php[L,QSA]
,它说如果请求的URI既不是文件也不是目录,那么就转到与第一组匹配的$1.php
。它试图找到但没有得到,所以可能是500服务器错误,因为根据请求URI,您不能有这样的动态文件。你检查日志了吗?现在输入不存在的页面而不是给出500个错误会将我重定向到主页。它需要转到404.phpAs,您可以看到,这些规则在哪里调用您的主页或index.php
,所以它必须在您的代码中。若要进一步测试,请将第一行更改为ErrorDocument 404 default
,然后重新测试。啊,您是正确的,底部有一些额外的字符串导致了这一情况,它现在工作得很好,谢谢!