php-错误文档与mod_重写相结合

php-错误文档与mod_重写相结合,php,.htaccess,mod-rewrite,errordocument,Php,.htaccess,Mod Rewrite,Errordocument,我正试图使用ErrorDocument 404/404.php设置ErrorDocument 404页面,但它不起作用,因为我启用了mod_rewrite。。。是否有机会检查页面是否在被修改之前存在?我在下面发布我的htaccess。。。这是由上一条规则引起的,它将所有内容重定向到product.php-RewriteRule^(+?)/?$product.php?url=$1[L,QSA] DirectoryIndex index.php RewriteEngine On ErrorDocu

我正试图使用
ErrorDocument 404/404.php
设置ErrorDocument 404页面,但它不起作用,因为我启用了mod_rewrite。。。是否有机会检查页面是否在被修改之前存在?我在下面发布我的htaccess。。。这是由上一条规则引起的,它将所有内容重定向到product.php-
RewriteRule^(+?)/?$product.php?url=$1[L,QSA]

DirectoryIndex index.php
RewriteEngine On

ErrorDocument 404 /404.php

RewriteRule ^(admin|subdom)($|/) - [L]

RewriteCond %{HTTPS} !=on
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

RewriteRule ^coming-soon/?$ coming-soon.php [L]

RewriteRule ^tabulky-velikosti/?$ tabulky-velikosti.php [L]
RewriteRule ^o-bambusu/?$ o-bambusu.php [L]
RewriteRule ^vymena-zbozi/?$ vymena-zbozi.php [L]
RewriteRule ^doprava-a-platba/?$ doprava-a-platba.php [L]
RewriteRule ^obchodni-podminky/?$ obchodni-podminky.php [L]
RewriteRule ^ochrana-osobnich-udaju/?$ ochrana-osobnich-udaju.php [L]
RewriteRule ^o-nas/?$ onas.php [L]
RewriteRule ^kontakt/?$ kontakt.php [L]
RewriteRule ^faq/?$ faq.php [L]
RewriteRule ^kosik/?$ cart.php [L]
RewriteRule ^blog/?$ blog.php [L]
RewriteRule ^search/?$ search.php [L]

RewriteRule ^blog/tag/(.*)/? blog.php?tag=$1 [L,QSA]
RewriteRule ^blog/(.*)/? blogDetail.php?url=$1 [L,QSA]

RewriteRule ^search/(.*)/? search.php?s=$1 [L,QSA]

RewriteRule ^zaciname/?$ category.php [L]
RewriteRule ^nakupovat/?$ category.php [L]
RewriteRule ^kategorie/?$ category.php [L]
RewriteRule ^prozkoumat/?$ category.php [L]

RewriteRule ^kategorie/((?:pan|dam|det)ske)-pradlo/?$ category.php?gender=$1 [L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+?)/?$ product.php?url=$1 [L,QSA]

我能做些什么吗?

还有另一种方法可以做到这一点。您可以通过
重写规则
设置404,然后通过URL而不是文件设置
错误文档

RewriteRule ^404/?$ 404.php
ErrorDocument 404 https://www.example.com/404.php
将其置于上一条规则下方,并从上一条规则中删除
[L]
标志

此方法不应导致
mod\u rewrite
出现问题。在测试此项之前,请确保清除缓存

编辑

您可以在最后一条规则中添加一个条件来排除
404.php
页面

RewriteCond %{REQUEST_URI} !^/404.php
这将阻止对该页面进行重写,因此您的代码将是:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/404.php
RewriteRule ^(.+?)/?$ product.php?url=$1 [L,QSA]

谢谢你的回答,但它仍然不起作用。。。在编辑的最后一行下面发布<代码>重写规则^(+?)/?$product.php?url=$1[QSA]重写规则^404/?$404.php错误文档404https://ecobamboo.cz/404.php。。。是否正确完成?可能只是尝试使用
ErrorDocument 404/404.php
,但再次发布在最后一条规则下方,并删除
[L]
标志。L标志表示
LAST
,并停止运行超过它的其他规则。这就是为什么我觉得这可能是问题的一部分。事实上,请参阅我的编辑@stepik21-这应该可以解决您的问题,并允许您保留您最初使用的
ErrorDocument 404/404.php
)是否可以与您进行一些聊天我仍然有一些问题。。。非常感谢你帮助我!当然,没问题。我已经创建了一个聊天室,让我们继续讨论这个问题。输入它。仅供参考,我正在工作,所以我的回答会断断续续:)