3

我想设置一个自定义的404错误文档,但是我遇到了问题!Apache“找不到文件”。而不是404错误文档

首先,我在我的.htaccess 2周的RewriteRules:

RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/?$ /$2/$3.php?lang=$1 [L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/?$ /$2/$3/$4.php?lang=$1 [L] 

所以我的URL看起来像:/ DE-DE /页/其它/东西和运行结束/page/other/stuff.php?lang =去德

现在是时候把我自己的错误文件: 的ErrorDocument 404 /404.php

如果在 “/ DE-DE /页/其它/”,例如“一个错误/ de-de/wrong/page /“我得到了错误文档的成功。但是,如果在php文件名中有错误(例如“错误的东西”而不是“东西”),我只会收到消息“找不到文件”。但不是我的错误文档。

出了什么问题?我能做些什么来解决它?

感谢您的帮助!

AuthType Basic 
AuthName "Password Protected Area" 
AuthUserFile /var/www/vhosts/<domain>/development/tests/demo.<domain>/.htpasswd 
Require valid-user 

<IfModule mod_rewrite.c> 
    RewriteEngine on   
    RewriteCond %{HTTPS} !=on 
    RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R,QSA] 
</IfModule> 



RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/?$ /$2/$3.php?lang=$1 [L] 
RewriteRule ^([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/?$ /$2/$3/$4.php?lang=$1 [L] 

ErrorDocument 404 /404.php 

Apache的错误日志:

[404] GET /de-de/support/support/fdfssdf HTTP/1.0 
AH01071: Got error 'Primary script unknown\n' 

回答

0

使用RewriteCond检查是否php文件存在:

RewriteCond %{REQUEST_URI} ^/([^/.]+)/([^/.]+)/([^/.]+)/?$ 
RewriteCond %{DOCUMENT_ROOT}/%2/%3.php -f 
RewriteRule^/%2/%3.php?lang=%1 [L] 

RewriteCond %{REQUEST_URI} ^/([^/.]+)/([^/.]+)/([^/.]+)/([^/.]+)/?$ 
RewriteCond %{DOCUMENT_ROOT}/%2/%3/%4.php -f 
RewriteRule^/%2/%3/%4.php?lang=%1 [L] 
相关问题