我从URL中删除了php
目录,并删除了.php扩展名。
但是现在我正尝试添加404/500错误,以使我的网站看起来不错。
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /php/$1 [QSA,L]
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php
当我将errorDocument重定向到外部页面时,它可以工作,但不能到我的本地文件。我得到一个500 Internal Server error
。我可以采取一种解决方法,只是将其转到外部页面,这将是我的页面。但这不是很干净。
有人可以帮助我吗?
答案 0 :(得分:1)
我认为您必须与DOCUMENT_ROOT
相匹配,并在添加RewriteCond %{REQUEST_FILENAME}\.php -f
之前添加此.php
:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{DOCUMENT_ROOT}/php%{REQUEST_URI}\.php -f
# or you could do it like this
# RewriteCond %{DOCUMENT_ROOT}/php%{REQUEST_URI} -f
# without php according to your setting
RewriteRule ^(.*)$ /php/$1 [QSA,L]
ErrorDocument 404 /errors/404.php
ErrorDocument 500 /errors/500.php
由于每当您向任何目标目的地发送错误请求时,都必须确保目标会处理该请求,并且有足够的条件来分类应该去哪一个,否则服务器会生成错误。