我想将所有请求的文件从文件夹-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
解决方案
我有一个旧的 htacess 文件,folder-a
所以重定向不起作用。这是我最后的 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>