php - Apache 2 mod_rewrite 和 PHP。从 htaccess 修改 $_SERVER ['REQUEST_URI' ] 值?

标签 php regex apache .htaccess mod-rewrite

我有这个 .htaccess 文件:

RewriteEngine On

RewriteRule ^hello$ goodbye

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

所以我收到了关于 index.php 的所有请求,但是当请求 hello 时我得到了 hello,我希望从 PHP 打印 $_SERVER['REQUEST_URI'] 时收到 goodbye

也就是说,$_SERVER['REQUEST_URI'] 似乎是不可改变的,即使在匹配引用 index.php 的 RewriteRule 之前已经重写了 URL。有什么办法可以修改这个值吗?

我想这样做是为了在不修改 PHP 文件的情况下,为某些现有代码添加薄而简单的 URL 预处理层。所以我试图坚持 .htaccess

最佳答案

首先,您犯了一个错误,没有在第一条规则中放置 LPT 标志。你的代码应该是这样的:

RewriteRule ^hello$ goodbye [PT]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^ index.php [L]

一旦该代码存在,访问 index.php 中的这个变量:

$_SERVER["REDIRECT_URL"]

这将具有值(value):/goodbye

编辑

如果您在主机上启用了 mod_proxy,您可以将第一条规则设置为:

RewriteRule ^hello$ /goodbye [P]

然后您将拥有:$_SERVER["REQUEST_URI"]=/goodbye

关于php - Apache 2 mod_rewrite 和 PHP。从 htaccess 修改 $_SERVER ['REQUEST_URI' ] 值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18618142/

相关文章:

php - 需要有关 PREPARE sql 函数 PDO 的帮助

php - date() 和夏令时的问题

php - 使用 php include 类函数

php - SQL需要提高运行速度

php - 我如何实现 jquery 背景消息?

php - 正则表达式匹配某些数字组合模式

regex - Grep 搜索特定字符问题

php - 从PHP中的变量返回第一句话

apache - httpd.conf 文件中的 LDAPS 身份验证失败

java - 使用jsp保持用户登录