RewriteRule ^(.*)/(.*)/$ index.php?r=contest&id=$1
我想重写
localhost/index.php?r=contest&id=1
到
localhost/contest/1
以上是我出来的重写规则。最初我认为它会起作用,但显然它没有。任何人都可以指导我的错误吗?
干杯
答案 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)