1

要求されたすべてのファイルをフォルダー 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>
4

1 に答える 1

2

おそらく、両方のルールを配置する必要があります。1 つは空のフォルダー用、もう 1 つはその他のファイル用で、最後にキャッチオールを配置します。これはテストされていません:

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]
于 2012-11-27T09:53:46.730 に答える