要求されたすべてのファイルをフォルダー 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]
ウェブスペースの構造は次のとおりです。
.htaccess
|-folder-a
|-folder-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>