我想将所有请求的文件从文件夹-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
| -folder-A
| -folder-B
但如果我想我的文件夹重定向
RewriteEngine On
RewriteRule ^/folder-a/(.*)$ http://www.yoursite.com/folder-b/$1 [L,R=301]
重定向不起作用,如果我输入f ollowing网址:
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中,我有以下'RewriteRule^test /(.*)$ http://www.yoursite.com/test2/$1 [L,R = 301]'。此重定向工作。如果我将其适应到我的真实文件夹,它将停止工作... – testing
我发现了错误。我的文件夹中有一个旧的.htaccess-a。这停住了重定向工作。我以为我删除了它...顺便说一句:我删除了这个规则'重写规则^文件夹-a/http://www.yoursite.com/folder-b/ [L,R = 301]'因为我比重定向到文件夹-b/index.php的。 – testing