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

我想重写

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

localhost/contest/1

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

干杯

4

2 回答 2

1

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

你可以试试这个:

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

或者:

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

选项:

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

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]
于 2013-04-11T17:45:10.420 回答
0

这是一个关于清理你的网址的非常好的文档

于 2013-04-11T17:52:01.077 回答