用问号和&符号重写网址

时间:2013-07-26 14:25:14

标签: .htaccess variables rewrite http-status-code-301

在我的网站上,我有类似网址的类别

www.example.com/?foowww.example.com/?bar

在这些类别中,我的文章包含以下网址:

www.example.com/?foo&nr=12

和包含这样的网址的群组:

www.example.com/?foo&group=somegroup

我正在尝试重写

/foo/?foo/bar?bar等; /bar/12/?bar&nr=12等,/foo/somegroup/foo&group=somegroup

无论有没有最终斜杠,都应该有效。

我尝试的(无可否认的)事情要么没有做任何事情,要么导致服务器错误。在某些方面,我也尝试了&nr=xx位或仅仅是类别。其中一些是:

  • RewriteCond %{QUERY_STRING} (?:^|&)([^&]+) RewriteRule /?(.*) %1/$1 [QSA]

  • RewriteRule ^/([^/]+)/([^/]+)$ /?$1&nr=$2

  • RewriteRule ^/([^/]+) ?nr=$1 [L]

1 个答案:

答案 0 :(得分:0)

好的,假设处理查询的文件是index.phpfoobar没有更改为其他内容,您可以这样开始:

RewriteEngine On
RewriteBase /

RewriteRule ^foo$ foo/ [NC,R]
RewriteRule ^foo/$ index.php?foo [NC,L]
RewriteRule ^foo/([A-Za-z0-9_-]+)$ foo/$1/ [NC,R]
RewriteRule ^foo/([A-Za-z0-9_-]+)/$ index.php?foo&group=$1 [NC,L]

现在你应该可以自己做bar部分了!

顺便说一下。如果你真的希望你的查询字符串只有?foo(没有值,如此:?foo=somevalue),你将不得不检查foo的存在方式,而不是像{1}}那样。 somegroup部分。