2010-06-04 49 views
2

这就是我想做的事:需要一个重写规则帮助 - 阿帕奇

http://www.mysite.com/  > http://www.mysite.com/index.php 
http://www.mysite.com/asd > http://www.mysite.com/index.php?page=$1 

asd将是网页(s)表示,获得追加到的index.php的$ page变量的名称。

我当前的重写规则成功地重定向了请求的页面,但未能加载默认的index.php页面。

RewriteEngine On 
RewriteRule ^([\w]*)$ /index.php?page=$1 [L] 

我该如何解决这个问题? :/

回答

1

你需要有匹配一个规则只/:

RewriteRule ^/$ /index.php [L] 

然后你的另外一个:

RewriteRule ^/([\w]+)$ /index.php?page=$1 [L] 
+0

不是'[\ w]'冗余吗?我认为'\ w'就够了。 – Amarghosh 2010-06-04 08:38:40

+0

我会说这是多余的。我发现RewriteRules有一种不能以意想不到的方式工作的倾向,所以我把它放进去了。 – 2010-06-04 13:33:20

1

对于我的,我只是整个路径传递到索引页面。

RewriteRule ^.*$ /index.php?page=$0 [L,QSA] 

然后使用list()explode()以块起来。

list($param1, $param2, $param3) = explode("/", $_GET['page']); 

否则,你将需要两条规则。

或者使用相同的规则,并在/页上有一个空的?page =参数。