RewriteRule ^(.*)/(.*)/$ index.php?r=contest&id=$1
我想重写
localhost/index.php?r=contest&id=1
至
localhost/contest/1
以上是我出来的重写规则。最初我认为它会起作用,但显然它没有。任何人都可以指导我的错误吗?
干杯
RewriteRule ^(.*)/(.*)/$ index.php?r=contest&id=$1
我想重写
localhost/index.php?r=contest&id=1
至
localhost/contest/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]
这是一个关于清理你的网址的非常好的文档