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] 
相關問題