重写规则帮助应该很简单,但不适合像我这样的新手

时间:2014-10-22 20:18:20

标签: string apache rewrite rules

我的oroginal网址看起来像这样

http://www.example.com/showads.php?type=1

此重写似乎有效

RewriteRule ^listings/type/([0-9]+)/?$ showads.php?adtype=$1 [NC,L]

所以我要做的就是输入www.example.com/listings/type/1并将其转到原始网址

当我向原始网址添加一个参数时,我的问题就出现了,就像这样

http://www.example.com/showads.php?type=1&clearfilters

我尝试了几种重写组合,但都没有。

我放弃之前的最后一个是这个

RewriteRule ^listings/type/([0-9]+)/clear?$ showads.php?type=$1&clearfilters [NC,L]

我做错了什么?在最后一次重写?感谢您的帮助。

由于

JT

更好的解释

感谢您的回复。但是,这仍然无效。

让我试着解释会发生什么

如果我输入此网址

http://www.example.com/showads.php?adtype=3&clearfilters

我得到了预期的结果。以下是对它的使用的解释

用户点击网站上的各种链接,每个链接设置不同的会话变量。在几次点击的范围内,可以设置5或6个会话变量。

如果要提交此网址而不使用clearfilters

http://www.example.com/showads.php?adtype=3

您将adtype的会话变量设置为3

现在我们将拥有adtype会话变量以及可能的其他一些

使用clearfilters set

提交此网址时
http://www.example.com/showads.php?adtype=3&clearfilters

该页面取消设置所有现有会话变量,并仅将adtype会话设置为3。

话虽如此,我正在寻找一条规则,我可以清理网址并输入类似的内容:

http://www.example.com/listings/type/3/clear 

和丑陋的网址一样做。

也许有更好的方法。我很满意。

谢谢

JT

1 个答案:

答案 0 :(得分:0)

从您的问题中不清楚您是否需要相同的替换网址,无论您是否拥有该网址的/clear部分。

如果您想要使用或不使用/clear的相同替换网址,您可以使用:

RewriteEngine On
RewriteRule ^listings/type/([0-9]+)(/clear)?$ showads.php?type=$1&clearfilters [NC,L]

如果您只想在键入的网址包含clearfilters部分时在替换网址中使用/clear参数,则可以执行以下操作:

RewriteEngine On
RewriteRule ^listings/type/([0-9]+)$        showads.php?type=$1 [NC,L]
RewriteRule ^listings/type/([0-9]+)/clear$  showads.php?type=$1&clearfilters [NC,L]