重定向目录中的目录和文件

时间:2013-09-26 02:41:01

标签: php .htaccess redirect

需要将目录名称重定向到一个位置,同时将该目录中的文件路径定向到其他位置。

换句话说:
重定向/ ORIGdirectoryname /到/ Adirectoryname /
将/ORIGdirectoryname/file.php重定向到/ Bdirectoryname /

我发现如果我写:
redirect 301 /ORIGdirectoryname/ http://yourdomain.com/Adirectoryname/
redirect 301 /ORIGdirectoryname/file.php http://yourdomain.com/Bdirectoryname/

http://yourdomain.com/ORIGdirectoryname/file.php
解决了 http://yourdomain.com/Adirectoryname/file.php
当我希望它解决时 http://yourdomain.com/Bdirectoryname/

2 个答案:

答案 0 :(得分:0)

可能是它的订单。

如果您能想象事件的时间表,它将会出现:

/origdirectoryname/(file here) 301到/Adirectoryname/

然后它不会触发第二次重定向,因为它不再在origdirectoryname上。如果您首先重定向文件,它将会:

/origdirectoryname/file.php 301到/bdirectoryname/

然后它不会触发从origdirectoryadirectory的重定向,因为您现在在bdirectory上。

答案 1 :(得分:0)

Redirect指令将两个URL路径节点链接在一起。到你的时候:

redirect 301 /ORIGdirectoryname/ http://yourdomain.com/Adirectoryname/

您将目录/ORIGdirectoryname/链接到/Adirectoryname/,包括每个文件和子目录。所以去:

http://yourdomain.com/ORIGdirectoryname/dir1/dir2/dir3/file.php

会将您重定向到:

http://yourdomain.com/Adirectoryname/dir1/dir2/dir3/file.php 

为防止这种情况发生,您可以改为使用RedirectMatch

RedirectMatch 301 ^/ORIGdirectoryname/file.php$ http://yourdomain.com/Bdirectoryname/
RedirectMatch 301 ^/ORIGdirectoryname/$ http://yourdomain.com/Adirectoryname/