编程语言
首页 > 编程语言> > php – 如何获取.htaccess将REQUEST_URI附加到404页面

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

作者:互联网

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

ErrorDocument 404 /pages/errors/index.php?e=404&url=%{REQUEST_URI}

我也尝试了一个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]

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

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

解决方法:

我不认为您必须将任何其他信息传递给错误处理程序脚本,如果这是您的问题. Apache提供了足够的信息:

Redirecting to another URL can be useful, but only if some information can be passed which can then be used to explain or log the error condition more clearly.

To achieve this, when the error redirect is sent, additional environment variables will be set, which will be generated from the headers provided to the original request by prepending ‘REDIRECT_’ onto the original header name. This provides the error document the context of the original request.

For example, you might receive, in addition to more usual environment variables, the following.

REDIRECT_HTTP_ACCEPT=/, image/gif, image/jpeg, image/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

REDIRECT_SERVER_PORT=80

REDIRECT_SERVER_SOFTWARE=Apache/2.2.15

REDIRECT_URL=/cgi-bin/buggy.pl

REDIRECT_ environment variables are created from the environment variables which existed prior to the redirect. They are renamed with a REDIRECT_ prefix, i.e., HTTP_USER_AGENT becomes REDIRECT_HTTP_USER_AGENT.

REDIRECT_URL, REDIRECT_STATUS, and REDIRECT_QUERY_STRING are guaranteed to be set, and the other headers will be set only if they existed prior to the error condition.

None of these will be set if the ErrorDocument target is an external redirect (anything starting with a scheme name like http:, even if it refers to the same host as the server).

检查这个link

标签:php,htaccess,mod-rewrite,errordocument
来源: https://codeday.me/bug/20190520/1143515.html