2013-01-21 65 views
1

我有以下网址:

http://www.domain.gr/add-event?state=3cb7a28b14112d3f3ecada3d6915ac5f&code=AQAZeWtJgz1ZYWvsorRPiMRetkNhnU3NrQ9KYzIRkogUpg6IPHCkFCAWMBUYGYtulfWnr5JHWs2GbrBUAp89pVLStyKs_rer2r14yLI6qdByoqEv1TtHGK4TPzdLFRTgXZEzPEUyk9ixYQfdmZid0dRdTfVXDPqniCKnu8RHQb1ErRDezsdI2CcYsTxofe_wwtZYVD3d4r9VtlANrGn_klP1#_=_ 

我重写规则正常工作与像http://www.doamin.gr/news/date/title-of-article 设置 '新闻' 的网址为$ _GET [ '页']和$ _GET ['要求“]为‘/日期/’冠军的-文章 我的htaccess具有下面的代码,以提供清洁的网址:

RewriteCond %{REQUEST_FILENAME} !-f 
#RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^([^/]*)(.*)$ /index.php?page=$1&request=$2 

通过上述网址$ _GET设置如下:

$ _GET ['page'] ='add-event'; $ _GET ['request'] =''; //空白

在这种情况下,我应该如何修改reqriteRule以获取url的剩余部分?(不会搞乱我的干净网址)。

+0

在顶部的长URL中,我看到2个“状态”和“代码”键。然后,他们的价值似乎试图在规则中被捕获。是对的吗?如果是这样,正则表达式应该在'state ='后面的所有内容以及'code ='后面的所有内容组成,而不是这样做。如果没有,请详细解释问题是什么。 –

+0

直到现在我没有得到我的干净网址上的变量,所以www.domain.gr/pagename/rest-url会分配$ _GET ['page'] = pagename和$ _GET ['request'] =/rest-url 。但在这种情况下,这个长URL $ _GET ['request']返回空我想它返回将是'?'后的所有内容。 – Syd

+0

好的。但查询中有两个参数:'$ 1和$ 2'。应该为哪个键分配整个传入查询,“页面”还是“请求”? –

回答

-1

您的第一个子图案([^/]*)贪婪图案。这意味着表达式将匹配输入字符串的最大可能子字符串(并且由于表达式匹配除了/字符以外的所有字符,它将匹配整个字符串 - 随后,第二个子模式将不匹配任何内容)。

可以标记子模式作为非贪婪懒惰(即([^/]*?)),但那么它将只匹配/字符。您可以修改该模式以匹配网址查询部分的开头部分:^([^/]*?)\?

+0

谨慎解释downvote? – helmbert