cgi-bin 的 Mod 重写

cgi-bin 的 Mod 重写

所以我想重写以下 url 结构

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

    mysite.com/+

我有这个规则,而且它有效,但当你仍然指向旧网址时,它不会强制在浏览器中打印网址。所以我有重复的内容。我尝试在其中添加 [R=302],但没有用。[R=302] 会使其打印原始的旧网址结构 (/cgi-bin/shop/shop.cgi/%)。有什么想法吗?

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

任何帮助将不胜感激!

答案1

您误解了重写规则。

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

意味着当客户端浏览到页面 mysite.com/+ 时,您的服务器将表现得好像他们已经写了mysite.com/cgi-bin/shop/shop.cgi/一样。

如果您希望重写以相反的方向工作,则需要交换表达式和目标,如下所示:

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

这意味着如果客户端浏览到mysite.com/cgi-bin/shop/shop.cgi/FOO,他们将被重定向到mysite.com/+FOO

请注意,同时使用当前规则和此规则并不是一个好主意,因为您可能会导致无限循环,至少在您使用重定向的情况下,因为重定向将导致新的请求,该请求将再次由重定向规则进行解析。

相关内容