mod_rewrite和GET的问题

时间:2010-12-02 09:11:11

标签: regex mod-rewrite get

所以,我之前有一个关于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请求?

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

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

2 个答案:

答案 0 :(得分:3)

使用QSA标记 - Query String Append

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

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

答案 1 :(得分:0)

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

as'?'是正则表达式中的元字符,需要进行转义