用于GET参数的Apache .htaccess正则表达式

时间:2014-02-26 09:44:27

标签: php regex apache .htaccess

我的.htaccess

中有类似的规则
  

RewriteRule ^ news /([0-9] +)/([0-9] +)/([0-9] +)/(。*)/ $ /?name = $ 4& year = $ 1 &安培; monthnum = $ 2及天= $ 3'/ p>

实施例

  

http://www.example.com/news/2014/02/25/stackoverflow-is-cool/

现在我需要在后面添加额外的参数,使其看起来像

  

http://www.example.com/news/2014/02/25/stackoverflow-is-cool/?source=email

我希望得到source值并尝试以下内容:

  

RewriteRule ^ news /([0-9] +)/([0-9] +)/([0-9] +)/ ([^ /] *)/ \?source =( 。*) $ /?name = $ 4& year = $ 1& monthnum = $ 2& day = $ 3& source = $ 5

但它不起作用。有什么建议吗?

谢谢。

2 个答案:

答案 0 :(得分:1)

我自己没试过,请你试一试

RewriteRule ^news/([0-9]+)/([0-9]+)/([0-9]+)/(.*)/$ /?name=$4&year=$1&monthnum=$2&day=$3 [QSA]

[QSA] Query String Append标志将保留现有的查询字符串。所以你的查询字符串

http://www.example.com/news/2014/02/25/stackoverflow-is-cool/?source=email

应该转换为

/?source=email&name=$4&year=$1&monthnum=$2&day=$3

请试一试。

答案 1 :(得分:0)

尝试

RewriteRule ^news/([0-9]+)/([0-9]+)/([0-9]+)/([^/]*)/\?$ /?name=$4&year=$1&monthnum=$2&day=$3&source=$5

当您获得源值时.....只需使用

$SrcVal = str_replace('source=','',$_GET['source']);