[英].htaccess & error pages - Stay on page and don't redirect
这似乎很简单。 ErrorDocument
重定向到另一个页面:
RewriteEngine On
ErrorDocument 400 /err/e=400
ErrorDocument 401 /err/e=401
ErrorDocument 403 /err/e=403
ErrorDocument 404 /err/e=404
ErrorDocument 500 /err/e=500
但是这些自定义错误页面的问题在于浏览器实际上重定向到页面/err/e=404
而不仅仅是显示其内容。 当不使用自定义错误页面时,浏览器中的URL保持不变,从而使用户无需重新输入即可更正URL。
问题:如何创建不会更改URL并将其保留为domain.tld/nonexistantfile
自定义错误页面?
背景:使用了 Debian Wheezy,Apache2和PHP。
更新发布整个.htaccess文件
RewriteEngine On
ErrorDocument 400 /err/e=400
ErrorDocument 401 /err/e=401
ErrorDocument 403 /err/e=403
ErrorDocument 404 /err/e=404
ErrorDocument 500 /err/e=500
RewriteRule ^favicon.ico$ favicon.ico [L]
RewriteRule ^css/(.*) css/$1 [L]
RewriteRule ^downloads/(.*) downloads/$1 [L]
RewriteRule ^images/(.*) images/$1 [L]
RewriteRule ^js/(.*) js/$1 [L]
RewriteRule index.php(.*) index.php$1 [L]
RewriteRule ^(.*)/(.*=.*) index.php?controller=$1&$2 [L]
RewriteRule ^(.*=.*) index.php?$1 [L]
RewriteRule ^(.*) index.php?controller=$1 [L]
最后一部分启用URL,例如/home
或page1/page2/param=123
您必须有一条规则来避免对像这样的真实文件/目录进行重写:
ErrorDocument 400 /err/e=400
ErrorDocument 401 /err/e=401
ErrorDocument 403 /err/e=403
ErrorDocument 404 /err/e=404
ErrorDocument 500 /err/e=500
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^ - [L]
RewriteRule ^([^/]+)/([^=]+=.*)$ index.php?controller=$1&$2 [L,QSA]
RewriteRule ^([^=]+=.*)$ index.php?$1 [L,QSA]
RewriteRule ^(.+)$ index.php?controller=$1 [L,QSA]
我还删除了一些多余的规则。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.