1

サブフォルダーのすべての静的HTMLファイルを新しい場所(古いサイトのdrupalバージョン)にリダイレクトする必要があります。

oldsite.net/topfolder/subx  =>  newsite.net/subx

ただし、すべてのファイルが新しいサイトに存在するわけではありません。不足しているファイルは、新しいサブフォルダーのメインページにリダイレクトする必要があります

例を挙げて(ターゲットURLには「.html」拡張子がないことに注意してください):

oldsite.net/topfolder/subx/file1.html redirect to newsite.net/subx/file1 
oldsite.net/topfolder/subx/file2.html redirect to newsite.net/subx/file2

oldsite.net/topfolder/subx/missing1.html redirect to newsite.net/subx/mainpage
oldsite.net/topfolder/subx/missing2.html redirect to newsite.net/subx/mainpage

ルートの.htaccessで、ファイルごとに次のように書くことができます。

redirect 301 /topfolder/subx/file1.html  http://www.newsite.net/subx/file1

不足しているファイルの場合

redirect 301 /topfolder/subx/missing1.html http://www.newsite.net/subx/mainpage

しかし、300を超えるファイルでは、多くの作業が必要になります。

私は書き換えルールの専門家ではありません。ルールを書き込もうとしていますが、うまくいかないようです。

これは既存のファイルで機能するはずです(私はそれをジェットで試しませんでした):

RewriteRule /topfolder/subx/^ (.*)\.html$  http://www.newsite.net/subx/$1 [R=301,L] 

しかし、不足しているファイルはどうでしょうか?そして、上記のルールは正しいですか?

なにか提案を?返信ありがとうございます。

4

1 に答える 1

1

mod_rewriteと.htaccessを有効にしてからhttpd.conf、このコードをoldsiteの.htaccessunderDOCUMENT_ROOTディレクトリに配置します。

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

RewriteRule ^topfolder/(subx/[^.]+)\.html$ http://www.newsite.net/$1 [R=302,L,NC]

を介してmod_rewriteと.htaccessを有効にしてhttpd.confから、このコードをnewsiteのディレクトリの.htaccess下に配置します。DOCUMENT_ROOT

# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
# If the request is not for a valid link
RewriteCond %{REQUEST_FILENAME} !-l
# not found then strip out query string and redirect to mainpage
RewriteCond %{QUERY_STRING} ^new=1$ [NC]
RewriteRule ^ subx/mainpage? [R=301,L]

# otherwise just strip out query string
RewriteCond %{QUERY_STRING} ^new=1$ [NC]
RewriteRule ^ %{REQUEST_URI}? [R=301,L]
于 2013-02-27T16:52:10.897 に答える