打开httpd.conf,把下面这行前的注释去掉
LoadModule rewrite_module modules/mod_rewrite.so
然后在最后加入以下两行: RewriteEngine on
RewriteRule /go\?userid=(.*) /go\.php\?userid=$1 [N,I]重启apache。
LoadModule rewrite_module modules/mod_rewrite.so
然后在最后加入以下两行: RewriteEngine on
RewriteRule /go\?userid=(.*) /go\.php\?userid=$1 [N,I]重启apache。
照理来说,下面这个是可以的。
RewriteRule /go\?userid=(.*) /go\.php\?userid=$1 [N]
因为下面这行可以:
RewriteRule /news/(.*)\.html /go\.php\?userid=$1 [N]
这个通过测试,即实现输入 网址/news/1.html时,自动返回 go.php?userid=1的内容。
你说的是可以实现的,问题是如何写这个正则,我大概写了下,但不知道为什么通不过。RewriteRule /(([^/]/)*)([^/]+)\?([^/]+)=([^/]+) /$1$3\.php\?$4=$5 [N][^]表示非的意思,[^/]表示非/的任一字符, [^/]/就是一层目录。*表示出现0次或多次。
()是抓变量,按出现顺序依次为$1,$2,$3
比如上面的这个例子:
RewriteRule /news/(.*)\.html /go\.php\?userid=$1 [N]
当输入 1.html时,匹配后“$1”的值就是 1