【发布时间】:2013-12-16 23:43:11
【问题描述】:
我正在尝试完成关于 nginx 重写的两件事。首先是这样重写:
oldvhost.domain.com/?dir=Dir1/Dir2/Dir3 -->
newvhost.domain.com/?dir=./Dir1/Dir2/Dir3
注意到第二个虚拟主机前面的“./”了吗?
其次,我试图重写这样的东西:
oldvhost.domain.com/orginal.php?file=Dir1/Dir2/Dir3/file.zip ->
newvhost.domain.com/newphpfile.php?file=./Dir1/Dir2/Dir3/file.zip
通过在任何位置命令之前在新虚拟主机上执行此操作,我已设法使其“在某种程度上”工作:
rewrite ^/original.php$ /newphpfile.php$1 last;
但这不是 100% 工作的,只能通过 $realpath PHP 函数来解决。我仍然需要通过正则表达式重写来进行这项工作,但是“?”的某些东西使它失败了。
【问题讨论】:
-
重写还是重定向?因为你正在改变主机。
-
301 重定向到新目录链接和文件链接。虽然我可以在原始 vhost 上对新 vhost 执行 301,然后担心新 vhost 上的重写。只要有效就没有关系。
标签: php regex mod-rewrite nginx