【问题标题】:Can a mod_rewrite result in GET requests being ignored?mod_rewrite 会导致 GET 请求被忽略吗?
【发布时间】:2013-04-08 09:49:02
【问题描述】:

我无法访问我的获取请求...

我的 .htaccess:

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /alex
RewriteRule ^admin/([a-zA-Z0-9]+)/?$ admin/index.php?page=$1
RewriteRule ^admin/([a-zA-Z0-9]+)?$ admin/index.php?page=$1
RewriteCond %{REQUEST_URI}  !(admin|assets|inventory|test)
RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1
RewriteCond %{REQUEST_URI}  !(admin|assets|inventory|test)
RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1
ErrorDocument 404 /alex/index.php?page=404
ErrorDocument 403 /alex/index.php?page=404

我点击的网址:

http://example.com/alex/admin/users?pagenum=37

示例 PHP 代码:

echo $_GET["pagenum"];

但是,我的 php.ini 中完全没有得到变量回显。是我的 .htaccess 造成的吗?如果不是...是什么?

【问题讨论】:

    标签: php .htaccess mod-rewrite get


    【解决方案1】:

    您需要在重写时使用QSA 标志:

    Options +FollowSymlinks -MultiViews
    RewriteEngine On
    RewriteBase /alex
    RewriteRule ^admin/([a-zA-Z0-9]+)/?$ admin/index.php?page=$1 [L,QSA]
    RewriteRule ^admin/([a-zA-Z0-9]+)?$ admin/index.php?page=$1 [L,QSA]
    RewriteCond %{REQUEST_URI}  !(admin|assets|inventory|test)
    RewriteRule ^([a-zA-Z0-9]+)/$ index.php?page=$1 [L,QSA]
    RewriteCond %{REQUEST_URI}  !(admin|assets|inventory|test)
    RewriteRule ^([a-zA-Z0-9]+)$ index.php?page=$1 [L,QSA]
    

    该标志会将任何现有的查询字符串附加到您在规则目标中构建的查询字符串的末尾。通常,如果您的规则目标中没有?,则默认情况下会附加查询字符串。但如果你的目标中有?,你需要QSA

    【讨论】:

    • @Pachonk 它只是停止当前迭代的重写,如果您已经匹配其中一个规则,则无需应用任何剩余规则
    • 好的!谢谢,我会在 10 分钟内接受这个答案。抱歉这里有一点用户 id10t 错误。
    猜你喜欢
    • 1970-01-01
    • 2011-03-28
    • 1970-01-01
    • 2019-07-12
    • 1970-01-01
    • 2016-08-27
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多