【发布时间】:2012-11-27 09:28:43
【问题描述】:
我想将所有请求的文件从文件夹 a 重定向到文件夹 b。例如。 http://www.yoursite.com/folder-a/index.php 到 http://www.yoursite.com/folder-b/index.php。
我该怎么做?我已经验证了 mod_rewrite 是否可以使用此代码:
RewriteEngine On
RewriteRule ^google.html$ http://www.google.com/ [R=301]
网络空间的结构如下:
.htacces
|-文件夹-a
|-文件夹-b
但是如果我想要我的文件夹重定向
RewriteEngine On
RewriteRule ^/folder-a/(.*)$ http://www.yoursite.com/folder-b/$1 [L,R=301]
如果我输入以下 URL,重定向将不起作用:
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>
【问题讨论】:
标签: .htaccess redirect directory