English 中文(简体)
由_GET美元压倒的QSA国旗
原标题:.htaccess QSA flag overridden by $_GET

这是我的重写规则

rewrite Rules {(.+)$ index.php?uri= 1美元[QSA,L]

当我去这个骨灰

http://localhost/ub/ab?uri=cd

$_GET[uri] 返回 cd ,代之以 ab

如何获取 $_GET[uri] return ab ? 还是QSA的真实行为?

谢谢,

<强 > EDIT

.ht access 文件在 ub 目录中, ab 目录从不存在。

最佳回答

不要使用 $_GET 来检索 uri 参数 -.ht access 规则不能推翻提交给您的脚本的 URI, 这样您就可以通过解析 $_SERVER[REQUEST_URI] 来检索 URI 的“ AB” 部分 。

我看过几个PHP应用程序, 如Joomla! 和Magento, 他们的. htaccess 文档简单地将所有文件都改成“ index.php ”, 并留给 PHP 路由代码, 将 URI 转换成一个要显示的页面 。

问题回答

使用您的重写规则来忽略/ 重写前的查询字符串 :

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+)$ index.php?uri=$1 [L]

在您的情况下, $_GET[uri] 是真实的 cd ,因为 ?uri=cd ab 是URL的一部分,不是Get查询的一部分。

我认为,这是因为您定义了 uri/code> 获取查询参数,在 Rewrite Rules {(.+)$ index.php?uri= 1美元[QSA,L] 和您访问的地址(http://localhost/ub/ab?uri=cd )中,它被第二个覆盖。

听着:

  1. You access http://localhost/ub/ab?uri=cd (query string is ?uri=cd)
  2. mod_rewrite send it to index.php and appends URL to it in uri GET parameter ( > index.php?uri=ub/ab)
  3. Then mod_rewrite (due to QSA) Appends Query String, so we get index.php?uri=ub/ab&uri=cd

所以 uri/code> 在最后请求中两次放置, 被第二个推翻 。

只要重命名您的 Get >uri 参数之一。





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...