2011-11-30 44 views
2

我有问题传递获取变量。国防部重写获取请求

index?p=calendar是指calendar.php位于​​和index.php是在根中。

我的网址localhost/researchportal/calendar/11/2011

日历有2个GET变量,月份和年份。即calendar.php?month=11&year=11

这里是我的规则,但它不工作。

RewriteRule ^calendar/([0-9]+)$/([0-9]+)$ index.php?p=calendar&month=$1&year=$2 [L] 

我也试过

RewriteRule ^calendar/([0-9]+)$/([0-9]+)$ pages/calendar.php?month=$1&year=$2 [L] 

.htaccess文件

RewriteEngine On 
RewriteBase /researchportal/ 
RewriteRule ^/calendar/([0-9]+)$ index.php?p=calendar [QSA,L] 

RewriteRule ^users/login /researchportal/pages/login.php [L] 
RewriteRule ^users/logout /researchportal/pages/logout.php [L] 
RewriteRule ^users/register logout.php [L] 

RewriteRule ^profile/([0-9]+)$ index.php?p=profile&usr_id=$1 [QSA,L] 
RewriteRule ^profile/edit/([0-9]+)$ index.php?p=edit&usr_id=$1 [L] 
RewriteRule ^([A-Za-z0-9-_]+)$ index.php?p=$1 [L] 

回答

1

^calendar/([0-9]+)$/([0-9]+)$

为何要停止($)两次?

^开始并且表达式和$结束它。在表达中间没有任何理由。

RewriteRule ^calendar/([0-9]+)/([0-9]+)$ pages/calendar.php?month=$1&year=$2 [L] 

应该工作得更好。如果你出于某种原因也想在url中添加一些查询变量,你可以用[L]替换为[L,QSA]

+0

我是一个新的mod重写,我认为$是表达式的一部分。现在我知道它结束了表达。 – SupaOden

0

我认为这个问题是因为你有一个额外的$字符。

RewriteRule ^calendar/([0-9]+) *$* /([0-9]+)$ index.php?p=calendar&month=$1&year=$2 [L]