gpt4 book ai didi

php - mod_rewrite & PHP; $_SERVER ['REQUEST_URI' ] 与 mod_rewrite

转载 作者:行者123 更新时间:2023-12-04 06:20:52 25 4
gpt4 key购买 nike

快速一:

我很好奇是否有人知道在某些情况下 $_SERVER['REQUEST_URI']将包含与 $_GET['_uri'] 不同的值,给定以下 .htaccess对于后者:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ ?_uri=$1 [L,QSA]

我一直在使用后一种方法 $_GET['_uri'] ,虽然我知道 mod_rewrite仍然是必要的,我想避免将 URI 存储为查询参数。

嗯,我发现了一个我以前没有注意到的;当应用程序引导到哪个 mod_rewrite forwards 不在根 Web 目录中, $_SERVER['REQUEST_URI']包含父目录,而 $_GET['_uri']仅包含后一个 URI 组件。例子:

Bootstrap is /subdir/index.php
Requesting http://localhost/subdir/foo/bar/baz/

$_SERVER['REQUEST_URI']  "/subdir/foo/bar/baz/"
$_GET['_uri']            "foo/bar/baz/"



为了复制 $_GET['_uri']的结果,决定使用这个:
$prefix = trim(dirname(strtr($_SERVER['PHP_SELF'], '\\', '/')), '/') . '/';
$uri = trim($_SERVER['REQUEST_URI'], '/') . '/';
if(substr($uri, 0, strlen($prefix)) == $prefix){
$uri = substr($uri, strlen($prefix));
}

但是我没用过 $_SERVER['PHP_SELF']通常在过去,现在已经读到它带有某些漏洞和/或与它的使用不一致。

最佳答案

http://example.com/meow?param=value&_uri=hihihi
  • 预期 $_GET['_uri']结果:meow
  • 实际结果:hihihi
  • $_SERVER['REQUEST_URI']值:/meow?param=value&_uri=hihihi
  • $_SERVER['REDIRECT_URL']值:/meow

  • 都是因为 [QSA]旗帜。

    使用 $_SERVER['REQUEST_URI']和/或 $_SERVER['REDIRECT_URL']反而。

    以上是针对Apache的。在 IIS 7.x 上,它可能有点不同。

    关于php - mod_rewrite & PHP; $_SERVER ['REQUEST_URI' ] 与 mod_rewrite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6590125/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com