在我的网站上,我有类似网址的类别
www.example.com/?foo
和www.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]
答案 0 :(得分:0)
好的,假设处理查询的文件是index.php
且foo
而bar
没有更改为其他内容,您可以这样开始:
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
部分。