将文件夹中的所有文件重写为另一个文件夹

时间:2012-11-27 09:28:43

标签: .htaccess redirect directory

我想将所有请求的文件从文件夹-a重定向到文件夹-b。例如。 http://www.yoursite.com/folder-a/index.phphttp://www.yoursite.com/folder-b/index.php

我该怎么做?我已验证mod_rewrite是否适用于此代码:

RewriteEngine On
RewriteRule ^google.html$ http://www.google.com/ [R=301]

网站空间的结构如下:

.htacces
| -folder-A
| -folder-b

但如果我想要我的文件夹重定向

RewriteEngine On
RewriteRule ^/folder-a/(.*)$ http://www.yoursite.com/folder-b/$1 [L,R=301]

如果我输入以下网址,则重定向不起作用:

http://www.yoursite.com/folder-a/
http://www.yoursite.com/folder-a/index.php

重定向不会发生。我留在同一页......我做错了什么?我也试过这个htaccess:

Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^folder-a(.*)$ http://www.yoursite.com/folder-b$1 [L,R=301]

</IfModule>

如果所有这些都有效,我想排除一些文件。例如。有了这个htaccess:

RedirectPermanent /folder-a/info.php /folder-b/new-info.php

修改

现在我尝试了这个htaccess

redirectMatch 301 ^/folder-a/ http://www.yoursite.com/folder-b

这样可行,但我需要一些能够占用整个路径并将其重写到新文件夹的东西。

例如,这不起作用:

RewriteRule ^folder-a/(.*)$ folder-b/$1

解决方案

我的folder-a中有一个旧的htacess文件,因此重定向无效。这是我最后的htaccess:

Options +FollowSymLinks
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^folder-a/excludefile1.php http://www.yoursite.com/folder-b/newnameforfile1.php [L,R=301]
RewriteRule ^folder-a/excludefile2.php http://www.yoursite.com/folder-b/newnameforfile2.php [L,R=301]
RewriteRule ^folder-a/(.*)$ http://www.yoursite.com/folder-b/$1 [L,R=301]

</IfModule>

1 个答案:

答案 0 :(得分:2)

您可能需要将两个规则放在适当的位置:一个用于空文件夹,另一个用于其他文件,然后是底部的全能。这未经过测试:

RewriteEngine On

RewriteRule ^folder-a/info.php http://www.yoursite.com/folder-b/new-info.php [L,R=301]
RewriteRule ^folder-a/ http://www.yoursite.com/folder-b/ [L,R=301]
RewriteRule ^folder-a/(.*)$ http://www.yoursite.com/folder-b/$1 [L,R=301]