Php 自定义404错误文档路径在htaccess中不工作

Php 自定义404错误文档路径在htaccess中不工作,php,.htaccess,mod-rewrite,error-handling,errordocument,Php,.htaccess,Mod Rewrite,Error Handling,Errordocument,我在.htaccess中有以下代码 ErrorDocument 400 /abc/404 RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-l RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^/ - [S=2] RewriteRule ^abc/(.*)/(.*)$ index.php?aa=$1&

我在.htaccess中有以下代码

ErrorDocument 400 /abc/404

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-l
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^/ - [S=2]
    RewriteRule ^abc/(.*)/(.*)$ index.php?aa=$1&bb=$2 [NE,L,QSA]
    RewriteRule ^abc/(.*)$ index.php?aa=$1 [NE,L,QSA]
但每当我传递一个错误的url时,就会出现以下错误

Not Found

The requested URL /abc/[S=2] was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
如果我删除了行
RewriteRule^/-[S=2]
,那么我将得到以下错误

Not Found

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
当我尝试
http://example.com/abcd/
我想要.htaccess重定向到
http://example.com/abc/404
哪一个是页面

我犯了什么错误。请帮帮我


提前感谢

确定用以下代码替换您的代码:

ErrorDocument 404 /abc/404

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^abc/([^/]+)/([^/]+)/?$ /index.php?aa=$1&bb=$2 [NE,L,QSA]

RewriteRule ^abc/([^/]+)/?$ /index.php?aa=$1 [NE,L,QSA]

确定用以下代码替换您的代码:

ErrorDocument 404 /abc/404

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

RewriteRule ^abc/([^/]+)/([^/]+)/?$ /index.php?aa=$1&bb=$2 [NE,L,QSA]

RewriteRule ^abc/([^/]+)/?$ /index.php?aa=$1 [NE,L,QSA]

/abc/404
是有效的URL吗?如果是,请在您的问题中发布您的完整.htaccess。谢谢Anubhava。我用完整的代码更新了问题,我正在等待你的帮助。我请求你,如果你能帮助我与上述将是非常伟大的。感谢您直接转到:
http://example.com/abc/404
是否显示页面?谢谢。是的,它确实显示404页面是有效的URL吗?如果是,请在您的问题中发布您的完整.htaccess。谢谢Anubhava。我用完整的代码更新了问题,我正在等待你的帮助。我请求你,如果你能帮助我与上述将是非常伟大的。感谢您直接转到:
http://example.com/abc/404
是否显示页面?谢谢。是的,它确实显示了404页如果你不介意的话,你能解释一下行
RewriteRule^-[L]
中发生了什么吗。。再次感谢,[^/]+和(.*)之间的区别是什么。我只知道(.*)是一个通配符,可以接受所有内容。关于你的问题1:它实际上忽略了真实文件、目录或链接的其余重写规则。关于问题2:没有太大的区别,但是[^/]+匹配,直到你使用更安全、更容易阅读的否定打/为止。如果你不介意的话,你能解释一下行
RewriteRule^-[L]
中发生了什么吗。。再次感谢,[^/]+和(.*)之间的区别是什么。我只知道(.*)是一个通配符,可以接受所有内容。关于你的问题1:它实际上忽略了真实文件、目录或链接的其余重写规则。关于问题2:没有太大的区别,但是[^/]+匹配,直到您使用更安全、更容易阅读的否定来点击a/为止。