1

現在、メイン サイトのサブフォルダとしてブログをセットアップしていますが、mydomain.com.au/blog/これ/blogは PHP によって動的に生成され、物理的に存在しません。

blog.mydomain.com.au私はサブドメインを作成しましmydomain.com.au/blog/blog.mydomain.com.au.

私は htaccess を使用して何度か試み、数回近くなりましたが、常に何か問題があります。以下は、予想される結果に最も近い2つの試みです。

1 回目の試行

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^blog\.mydomain\.com\.au$
RewriteRule ^.*$ http://www.mydomain.com.au/blog%{REQUEST_URI} [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

これによりblog.mydomain.com.auにリダイレクトされwww.mydomain.com.au/blog/ますが、URL はマスクされません (アドレス バーには が表示されますwww.mydomain.com.au/blog/)。

2回目の試行

RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com\.au$ [NC]
RewriteRule blog/(.*) http://blog.mydomain.com.au/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

これが一番近かった。下のすべてのページで必要な方法で URL をリダイレクトしてマスクします/blog/(たとえば、 blog.mydomain.com.au/whatever/ は www.mydomain.com.au/blog/whatever/にリダイレクトしますが、URL をブログとしてマスクします。 mydomain.com.au/whatever/blog.mydomain.com.au ) にリダイレクトされますが、に対しては実行されませんwww.mydomain.com.au

4

1 に答える 1

0

ここには 2 つの異なる要件があります。最初のものは書き換えであり、リクエストがあり、ドメイン部分とルール置換blog.mydomain.com.auのフラグを削除すると機能しますR

RewriteCond %{HTTP_HOST} ^blog\.mydomain\.com\.au$ [NC]
RewriteRule !^blog/ /blog%{REQUEST_URI} [L]

リクエストが_www.mydomain.com.au/blog/

RewriteCond %{HTTP_HOST} ^(www\.)?mydomain\.com\.au$ [NC]
RewriteRule blog/(.*) http://blog.mydomain.com.au/$1 [R,L]

すべてが期待どおりに機能したら、 に変更できRますR=301

有効にしてテストしない301でください。詳細については、この回答 .htaccess 書き換えルール をデバッグするためのヒント を参照してください。

于 2013-04-23T14:47:49.897 に答える