我根据用户输入的内容有两个重写条件。第一个是我们列出的公司,第二个是我们没有列出的公司。
RewriteRule ^companies/([^/]+)/([0-9]+)/$ %{DOCUMENT_ROOT}/index.php?action=companies¶m=$1&articleId=$2 [NC,L,B]
RewriteRule ^companies/([^/]+)/$ %{DOCUMENT_ROOT}/index.php?action=companies¶m=$1&articleId=0 [NC,L,B]
我发现了一些常见的拼写错误,例如'm& s'而不是'mark& s; spencer'所以我想301将用户直接重定向到那里,例如
301重定向:http://www.example.com/companies/m&s/至http://www.example.com/companies/marks- \& -spencers / 557 /
我在各个地方的htaccess中使用过它:
redirectMatch 301 ^/companies/m&s/$ http://www.example.com/companies/marks-\&-spencers/557/
但是,生成的网址为http://www.example.com/companies/marks-&-spencers/557/?action=companies¶m=aldie&articleId=0
如何在没有查询字符串的情况下显示它,因此它只是http://www.example.com/companies/marks-&-spencers/557/
答案 0 :(得分:1)
如果你的Apache版本是> = 2.4,你可以使用标志[QSD]来避免重写查询字符串:
RewriteRule ^companies/m&s/$ http://www.example.com/companies/marks-\&-spencers/557/ [R=301,QSD]
如果它是旧版本的Apache,您可以使用一个小技巧,在重写的URL的末尾添加一个询问标记,以获得一个空的查询字符串:
RewriteRule ^companies/m&s/$ http://www.example.com/companies/marks-\&-spencers/557/? [R=301]