古いドメインを新しいサブドメインにリダイレクトしようとしていますが、ブラウザのアドレス バーに古いドメインが表示されるようにしています。
私はそれを行うためにhtaccessを使用しましたが、アドレスバーに古いドメインが表示されたままになることを除いて、すべてが機能します。
もう 1 つの重要な点は、url および GET 変数内のフォルダーを維持する必要があることです。
これを実現するためにiフレームを使用したくないので、htaccessを介してこれらすべてをエレガントに実行しようとしています。
ここに私がこれまで使ってきたコードがあります。ブラウザのアドレスバーに古いドメイン名を維持することを除いて、それは機能します.
私の質問は、リダイレクト後にブラウザーのアドレスバーに古いドメイン名を表示し続けるにはどうすればよいですか? これは「コンテンツのプロキシ」と呼ばれるものによって実行できるとどこかで読みましたが、間違っている可能性があります。それがどのように機能するかもわかりません。
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^domain.com [nc]
RewriteRule ^(.*)$ http://subdomain.domain.com/$1 [r=301,nc,L]
RewriteCond %{HTTP_HOST} ^www.domain.com [nc]
RewriteRule ^(.*)$ http://subdomain.domain.com/$1 [r=301,nc,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
更新:
さて、私はさらに一歩を踏み出しました。次のコードは、Web サイトのファイルをルートのサブディレクトリに配置すると機能します。
ただし、まだ問題があります。example.com を example.com/subdirectory にリダイレクトしますが、 example.com/index.php を example.com/subdirectory/index.php にリダイレクトしません。
index.phpを含むすべてのファイルで機能するように、私はまだそれを行う方法を理解しようとしています。
#Redirect a domain to a subdirectory, while displaying only the domain and not the subdirectory in the browser address bar.
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com [nc]
RewriteRule ^$ /subdirectory/ [nc,L,QSA]
RewriteCond %{HTTP_HOST} ^www.example.com [nc]
RewriteRule ^$ /subdirectory/ [nc,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
もう1つ注意してください。私のウェブサイトのすべての要素は相対パスを使用するため、Web サイトの HTML の相対パスがファイルの間違ったルート ディレクトリを参照していたため、リライタルールが原因で動作させるために、HTML ルートをサブディレクトリに設定する必要がありました。 . つまり、サブディレクトリではなく、実際のルート ディレクトリにリンクしていました。次のように、html ルート/ベースをサブディレクトリに設定します。
<head>
<base href="http://<?php echo $_SERVER['HTTP_HOST']; ?>/subdirectory/" />
</head>
アップデート:
さて、私はさらに一歩を踏み出しました。次のコードは、Web サイトのファイルをルートのサブディレクトリに配置すると機能します。
ただし、まだ問題があります。example.com を example.com/subdirectory にリダイレクトしますが、 example.com/index.php を example.com/subdirectory/index.php にリダイレクトしません。
index.phpを含むすべてのファイルで機能するように、私はまだそれを行う方法を理解しようとしています。
#Redirect a domain to a subdirectory, while displaying only the domain and not the subdirectory in the browser address bar.
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^example.com [nc]
RewriteRule ^$ /subdirectory/ [nc,L,QSA]
RewriteCond %{HTTP_HOST} ^www.example.com [nc]
RewriteRule ^$ /subdirectory/ [nc,L,QSA]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
もう1つ注意してください。私のウェブサイトのすべての要素は相対パスを使用するため、Web サイトの HTML の相対パスがファイルの間違ったルート ディレクトリを参照していたため、リライタルールが原因で動作させるために、HTML ルートをサブディレクトリに設定する必要がありました。 . つまり、サブディレクトリではなく、実際のルート ディレクトリにリンクしていました。次のように、html ルート/ベースをサブディレクトリに設定します。
<head>
<base href="http://<?php echo $_SERVER['HTTP_HOST']; ?>/subdirectory/" />
</head>