【问题标题】:Problems with mod_rewrite and GETmod_rewrite 和 GET 的问题
【发布时间】:2011-05-19 00:18:24
【问题描述】:

所以,我之前有一个关于 mod_rewrite 的问题,你可以在这里找到 mod_rewrite changing /subpage/ to /subpage

但现在我遇到了一个全新的问题......我如何让 GET 工作?

如果我需要使用 GET 传递一些变量,例如:mypage.com/subpage/?name=Jamie

我的 mod_rewrite 看起来像这样:

Options +FollowSymLinks
RewriteEngine On
RewriteCond %{SCRIPT_FILENAME} !-d
RewriteCond %{SCRIPT_FILENAME} !-f

RewriteRule ^([A-Za-z0-9-]+)/?$ ?p=$1 [L]

我知道问题可能与我已经通过并重写了一个 GET 请求有关。那么我该如何调整它以接受我可能需要处理的任何其他 GET 请求?

更新:
稍微澄清一下问题。如果我尝试 url mypage.com/subpage/?name=Jamie 页面加载,就好像我使用了 url mypage.com/subpage/ 并且“名称”永远不会通过。使用我的原始网址 mypage.com?p=subpage&name=Jamie 可以正常工作。

我想我需要以某种方式对此进行调整......但是如何?
感谢您花时间阅读我可能很简单的问题!

【问题讨论】:

  • 到底有什么问题?
  • 好吧,如果我尝试 url mypage.com/subpage/?name=Jamie 页面加载,就好像我使用了 url mypage.com/subpage/ 并且 name 从未通过,至少看起来像。使用我的原始网址 mypage.com?p=subpage&name=Jamie 可以正常工作。

标签: regex mod-rewrite get


【解决方案1】:

使用QSA 标志——Query String Append

RewriteRule ^([A-Za-z0-9-]+)/?$ ?p=$1 [L,QSA]

'qsappend|QSA' (query string append)
此标志强制重写引擎将替换字符串的查询字符串部分附加到现有字符串,而不是替换它。当您想通过重写规则向查询字符串添加更多数据时,请使用此选项。

【讨论】:

    【解决方案2】:

    试试

    RewriteRule ^([A-Za-z0-9-]+)/\?$ ?p=$1 [L]
    

    作为“?”是正则表达式中的元字符,需要转义

    【讨论】:

    • 添加 \ 使它根本不起作用,然后我得到的只是页面不存在。原始请求工作正常,但我似乎无法再通过任何获取请求。
    猜你喜欢
    • 2017-04-08
    • 2011-12-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多