0

私は mod 書き換えルールに非常に慣れておらず、以前にサブディレクトリでホストされていたサイトを新しいドメインにリダイレクトするために使用しているルールに問題があります。私が使用しているルールは次のとおりです。

RewriteEngine on
RewriteBase /oldsite/ #also tried this without the trailing slash
RewriteRule ^.* http://newsite.com [R=301,NC,L]

これは、3 レベルの深さを取得し、リダイレクトされた URL に末尾のスラッシュを追加するまでは完全に機能します。したがって、結果は次のようになります。

  • olddomain.com/oldsite が newsite.com にリダイレクトされる [正しい]
  • olddomain.com/oldsite/ が newsite.com にリダイレクトされる [正しい]
  • olddomain.com/oldsite/subdirectory が newsite.com/subdirectory にリダイレクトされる [正しい]
  • olddomain.com/oldsite/subdirectory/ は newsite.com にリダイレクトされます [間違っています!]

私は 99% そこにいるように感じますが、最後の少しを理解するために少し髪を引っ張っています. 何を変更する必要があるか考えていますか?

ありがとう!

また、.htaccess ファイルを public html フォルダーと /oldsite フォルダーに配置することをテストしましたが、サイトの他の場所に htaccess ファイルはありません。

4

1 に答える 1

1

もうすぐです。サーバーの/oldsiteの.htaccessにこれを入れてください。

RewriteEngine On
RewriteRule (^.*) http://newsite.com/$1 [R=301,NC,L] 

括弧内に一致する正規表現を配置すると、$1として使用できるようになります。複数ある場合は、1ドルが最初、2ドルが2番目というようになります。

mod_rewriteのマニュアルページ、特にrewriteruleセクション(http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule)を読むことをお勧めします。

于 2013-02-04T07:22:05.990 に答える