如何获取.htaccess将REQUEST_URI附加到404页面

SIS*_*SYN 5 php .htaccess mod-rewrite errordocument

有没有办法将请求URI作为URL变量发送到404页面?例如,如果我用ErrorDocument指令转发我的404 ,有没有办法做这样的事情?这是我试过的代码,但显然没有用.

ErrorDocument 404 /pages/errors/index.php?e=404&url=%{REQUEST_URI}
Run Code Online (Sandbox Code Playgroud)

我也尝试了一个mod_rewrite,但我也无法做到这一点.这是我尝试使用mod_rewrite:

Options +FollowSymLinks
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* /pages/errors/index.php?e=404&url=%{REQUEST_URI} [L,R=404]
Run Code Online (Sandbox Code Playgroud)

基本上我所要做的就是当用户键入类似的内容时,http://mysite.com/asdf它会转发到http://mysite.com/pages/errors/index.php?e=404&url=/asdf假设/asdf服务器上不存在该目录.

有没有一种简单的方法来实现这一目标?

Fel*_*a A 4

我认为您不必将任何附加信息传递给错误处理程序脚本,如果这就是您的问题所在。Apache 提供了足够的信息:

重定向到另一个 URL 可能很有用,但前提是可以传递一些信息,然后可以使用这些信息来更清楚地解释或记录错误情况。

为了实现这一点,当发送错误重定向时,将设置额外的环境变量,这些变量将从提供给原始请求的标头生成,方法是将“REDIRECT_”添加到原始标头名称上。这为错误文档提供了原始请求的上下文。

例如,除了更常见的环境变量之外,您可能还会收到以下内容。

REDIRECT_HTTP_ACCEPT= /、图像/gif、图像/jpeg、图像/png

REDIRECT_HTTP_USER_AGENT=Mozilla/5.0 Fedora/3.5.8-1.fc12 Firefox/3.5.8

REDIRECT_PATH=.:/bin:/usr/local/bin:/sbin

REDIRECT_QUERY_STRING=

REDIRECT_REMOTE_ADDR=121.345.78.123

REDIRECT_REMOTE_HOST=client.example.com

REDIRECT_SERVER_NAME=www.example.edu

重定向_服务器_端口=80

REDIRECT_SERVER_SOFTWARE=Apache/2.2.15

REDIRECT_URL=/cgi-bin/buggy.pl

REDIRECT_ 环境变量是根据重定向之前存在的环境变量创建的。它们使用 REDIRECT_ 前缀重命名,即 HTTP_USER_AGENT 变为 REDIRECT_HTTP_USER_AGENT。

保证设置 REDIRECT_URL、REDIRECT_STATUS 和 REDIRECT_QUERY_STRING,并且仅当其他标头在错误条件之前存在时才会设置它们。

如果 ErrorDocument 目标是外部重定向(任何以 http: 等方案名称开头的内容,即使它引用与服务器相同的主机),则不会设置这些内容。

检查此链接