我创建了一个404.php页面,并将以下内容添加到我的.htaccess文件中
ErrorDocument 404 /404.php
还可以删除斜线,添加完整的URL等,
无论我做什么,无论我在URL中写什么内容,我都会得到index.php UI.这是事实,这不是将我重定向到domain.com/index.php或“ /”. URL仍然存在,但是UI是index.php的内容
我在下面添加了我的重定向,以防您发现其中存在冲突
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} !^www.example.com$[NC]
RewriteRule ^(.*)$https://www.example.com/$1 [L,R=301]
RewriteCond %{SERVER_PORT} !^443$
RewriteRule ^(.*)$https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteBase /
RewriteRule ^index\.php$- [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
解决方法:
根据我对mod_rewrite的了解,最后4行在说
如果请求文件名既不是文件也不是目录,
重定向到index.php.
我相信这就是正在发生的事情.
应用程序的物理路径上所有不可用的路由都将进入index.php.
您的应用程序中将需要一些404机制.如果使用的是框架,通常会引发类似“ RouteNotFound”的异常,然后将错误处理程序重定向到404页面,您也可以执行类似的操作,并将其从应用程序内重定向到404.php.
if($should_be_an_error) {
header("Location: 404.php");
}
(多年来未使用过类似方法,但应该类似)
或删除
`
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
`
但是您的其他路线可能会停止工作.
编辑:
由于您想重定向到404.php而不是index.php(从注释中获取),因此代码应更改为
RewriteRule . /404.php [L]
(重写块的最后一行)