我的简单重写规则不起作用

时间:2013-04-11 17:38:56

标签: mod-rewrite url-rewriting

RewriteRule ^(.*)/(.*)/$ index.php?r=contest&id=$1

我想重写

localhost/index.php?r=contest&id=1

localhost/contest/1

以上是我出来的重写规则。最初我认为它会起作用,但显然它没有。任何人都可以指导我的错误吗?

干杯

2 个答案:

答案 0 :(得分:1)

您问题中的规则是在第一个正则表达式组中使用返回$ 1到contest的引用,而不是使用1在第二个组中使用$ 2。

您可以尝试这样做:

RewriteRule ^([^/]+)/([^/]+)/? index.php?r=contest&id=$2 [L,NC]

或者:

RewriteRule ^([^/]+)/([^/]+)/? index.php?r=$1&id=$2 [L,NC]

OPTION:

只使用一个参数的规则应该是这样的,假设它是一个动态字符串:

RewriteRule ^([^/]+)/? index.php?r=$1 [L,NC]

使用完整的规则集更新:

请求示例:localhost/contest/1

Options +FollowSymlinks -MultiViews
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -f  [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule . - [L]

# 2 parameters. Both dynamic.
RewriteCond %{REQUEST_URI} !index\.php   [NC]
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?r=$1&id=$2 [L,NC]

# 1 dynamic parameter.
RewriteCond %{REQUEST_URI} !index\.php   [NC]
RewriteRule ^([^/]+)/?$ index.php?r=$1   [L,NC]

答案 1 :(得分:0)

这是cleaning your url's

上非常好的文档