我想将所有请求的文件从文件夹-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]
如果我输入以下网址,则重定向不起作用:
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>
答案 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]