php - 如何将 REQUEST_URI 从 htaccess 传递给 PHP
问题描述
我正在设置一个重定向 URL,从该 URL 传递REQUEST_URI
到.htaccess
PHP 文件。
这是我的文件结构:
index.php
.htaccess
folder/index.php
如果网址是http://example.com/?something
我想从 to 传递完整%{REQUEST_URI}
的 URL并使用..htaccess
folder/index.php
$_SERVER['REQUEST_URI']
我的folder/index.php
:
echo $_SERVER['REQUEST_URI'];
.htaccess
:
更新:
Options +FollowSymLinks -MultiViews
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{QUERY_STRING} ^(.*)$
RewriteCond %{REQUEST_URI} !/folder/index.php$
RewriteRule .* /folder/index.php [L,NE]
</IfModule>
我希望REQUEST_URI
在 PHP 文件中回显,但总是给外部服务器。
解决方案
我想从 to 传递完整
%{REQUEST_URI}
的 URL并使用..htaccess
folder/index.php
$_SERVER['REQUEST_URI']
你实际上不能这样做(但我认为这不是你想要做的——或者甚至不是想要做的——无论如何)。澄清...
PHP 超全局$_SERVER['REQUEST_URI']
由 PHP 填充,并且不能被覆盖。
虽然%{REQUEST_URI}
(Apache服务器变量)和$_SERVER['REQUEST_URI']
(PHP 超全局变量)相似,但它们引用不同的值:
%{REQUEST_URI}
(Apache 服务器变量)- 仅引用 URL 路径(无查询字符串)。该值是 % 解码的。如果请求被重写,则更新它以包含重写的 URL,而不是初始请求的 URL。$_SERVER['REQUEST_URI']
(PHP 超全局)- 保存用户请求的初始 URL 路径和查询字符串(不是重写的 URL)。该值未进行 % 解码。
如果您确实想REQUEST_URI
在 PHP 中引用 Apache 服务器变量,那么您需要显式传递它(可能作为环境变量或查询字符串) - 但取决于您何时“传递它”,您最终可能会传递不同的值。无论哪种方式,这都不会改变 的值$_SERVER['REQUEST_URI']
,如上所述,它是由 PHP 控制的。
例如:
RewriteRule ^ - [E=APACHE_REQUEST_URI:%{REQUEST_URI}]
并在 PHP 中将其引用为getenv('APACHE_REQUEST_URI')
.
更新:
根据它的声音,您可能想要以下内容:
RewriteCond %{QUERY_STRING} .
RewriteRule ^(index\.php)?$ folder/index.php [L,NE]
这在内部将包含查询字符串(之后的所有内容)对文档根的任何请求重写为. 当查询字符串不存在时,文档根目录中的服务正常。?
/folder/index.php
index.php
然后,/folder/index.php
您只需访问$_SERVER['QUERY_STRING']
即可访问查询字符串(要重定向到的字符串)。
推荐阅读
- javascript - 传播类函数
- excel - 从 Postico 导出到 CSV 并在 Excel 上打开时如何更正日期格式?
- sql - 将字符串(看起来像 list )拆分为 Hive 中的值列表
- javascript - 当父项上的下一项与选择器上的 ngIf 具有相同的变量值时,角度子组件不会被破坏
- react-native - 将 react-spring 用于 react-native
- php - 免费主机比付费主机表现更好,还是我的网站有其他问题?
- java - 抽屉布局中菜单项工具栏上的后退操作按钮不起作用
- angular - 使用等待异步时出错 - “未捕获(承诺):已取消”
- jenkins - 使用验证字符串参数或字符串参数时如何在Jenkins构建中用正斜杠替换反斜杠
- javascript - Javascript:如何沿多个标签获取getSelection的标签?