我收到500 Internal Server Error而不是: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/$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语法不太满意。
任何帮助或建议将不胜感激!
答案 0 :(得分:1)
301
重定向(不利于SEO和效率).php
文件是否存在,然后才能在您的URI中添加.php
。.htaccess的完整权限:
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]
答案 1 :(得分:0)
在这些拖曳线之后:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
添加此行:
RewriteCond %{REQUEST_FILENAME}\.php -f
确保在发送给请求之前,该请求接受php
扩展名:
RewriteRule ^(.*)$ $1.php [L,QSA]
当您向任何目标发送不存在的请求时,请确保该目标将正确处理此问题,否则服务器将给出错误消息。