Mod重写cgi-bin

所以我想重写下面的url结构

mysite.com/cgi-bin/shop/shop.cgi/ 

  mysite.com/+ 

我有这个作为一个规则,它的工作原理,但它不强制url打印在浏览器中,当你仍然指向旧的url。 所以我有重复的内容。 我已经尝试添加[R = 302],它不起作用。 [R = 302]使它打印出原来的旧url结构(/cgi-bin/shop/shop.cgi/%)。 有任何想法吗?

  RewriteRule ^\+([^*]+)/?$ /cgi-bin/shop/shop.cgi/$1 

任何帮助将不胜感激!

你有重写规则扭曲。

 RewriteRule ^\+([^*]+)/?$ /cgi-bin/shop/shop.cgi/$1 

意味着当客户端浏览到页面mysite.com/+时,您的服务器就像他们写了mysite.com/cgi-bin/shop/shop.cgi/

如果你想重写的方向相反,你需要交换expression式和目标,如下所示:

 RewriteRule /cgi-bin/shop/shop.cgi/(.*) /\+$1 [L,R] 

这意味着如果客户端浏览到mysite.com/cgi-bin/shop/shop.cgi/FOO ,他们会得到一个redirect到mysite.com/+FOO

请注意,同时使用当前规则和这个规则并不是一个好主意,因为您可能会导致无限循环,至less如果您使用redirect,因为redirect会导致一个新的请求再次被redirect规则parsing。