Php .htaccess如何更改$\u服务器[请求\u URI]?

Php .htaccess如何更改$\u服务器[请求\u URI]?,php,.htaccess,mod-rewrite,Php,.htaccess,Mod Rewrite,我在http://ex.com/web2/这是我服务器中的一条真实路径,但我希望访问者也能通过URL访问网站http://ex.com/web3/(不更改浏览器上的URL),因此在四处查看(并寻求帮助)后,我将以下内容添加到我的.htaccess: <IfModule mod_rewrite.c> Options +FollowSymLinks -MultiViews RewriteEngine On RewriteBase / RewriteRule

我在
http://ex.com/web2/
这是我服务器中的一条真实路径,但我希望访问者也能通过URL访问网站
http://ex.com/web3/
(不更改浏览器上的URL),因此在四处查看(并寻求帮助)后,我将以下内容添加到我的
.htaccess

<IfModule mod_rewrite.c>
    Options +FollowSymLinks -MultiViews
    RewriteEngine On
    RewriteBase /
    RewriteRule ^web3/?$ /web2/ [L,NC]
    RewriteRule ^web3/(.+)$ /web2/$1 [L,NC]
</IfModule>

选项+以下符号链接-多视图
重新启动发动机
重写基/
重写规则^web3/?$/web2/[L,NC]
重写规则^web3/(.+)$/web2/$1[L,NC]
“静默”重定向不会更改浏览器URL,但在PHP中,如果我
print$\u SERVER[REQUEST\u URI]
得到用户放在浏览器上的URL,则
/web3/
而不是
/web2/

有没有办法
.htaccess
也可以“伪造”发送到PHP变量的路径? (有人告诉我这很难,甚至不可能。)


谢谢。

如果加载了mod_proxy,您可以在内部代理请求。这将更改
REQUEST\u URI
server变量,但这是一种迂回的方法。如果这一切都发生在php脚本中,那么效率会高得多

RewriteRule ^web3/?$ /web2/ [L,NC,P]
RewriteRule ^web3/(.+)$ /web2/$1 [L,NC,P]

只需将
p
标志添加到方括号中。

您通常也会获得
重定向请求URI
,或者可以使用
[E=ORG\u URL:$1]
添加
[E=ORG\u URL:$1]
不会更改
$\u服务器[请求URI]
上的值。使用其中的重定向或modrewrite命令。htaccess当然$\u SERVER[REQUEST\u URI]不会更改,因为该值应该包含客户端请求的内容。你为什么需要它在你的脚本中包含
/web2/
,为什么你不能更改其中的任何内容?对不起,我尝试使用你的建议…要使用它,我只需要取消注释。。。LoadModule proxy_modules/mod_proxy.so#这一行?