web-dev-qa-db-ja.com

htaccessは、ルートドメインからサブドメインの同名ページにページをリダイレクトします

Wordpressサイトで、する必要があります

http://example.com/page1/

にリダイレクト

http://site.example.com/page1/

私はこれを試しました:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_Host} ^example\.com$ [OR]
RewriteCond %{HTTP_Host} ^www\.example\.com$
RewriteRule ^page1$ "http\:\/\/site\.example\.com\/page1\/" [R=301,L]
</IfModule>

上記は機能しませんでした。また、二重引用符を削除し、スラッシュをエスケープし、URLを直接入力しましたが、成功しませんでした。私は本当に助けに感謝します。

4
atul

http://example.com/page1/

RewriteRule ^page1$ ....

RewriteRulepatternの最後にスラッシュがありません。 .htaccessのドキュメントルートにあるexample.comファイルで次を試してください。これはbefore既存のWordPressの書き換えを行う必要があります。

RewriteEngine On

RewriteCond %{HTTP_Host} ^(www\.)?example\.com$ [NC]
RewriteRule ^page1/$ http://site.example.com/page1/ [R=301,L]

また、二重引用符を削除し、スラッシュをエスケープします...

はい、大量のバックスラッシュエスケープは必要ありません。これはcPanelの試みの1つに見えます。

また、mod_rewriteがインストールされていなくても「機能する」ことが予想される場合を除き、<IfModule>ラッパーは不要ですか?

RewriteBaseディレクティブもここでは不要です。 (.htaccessファイルにはRewriteBaseディレクティブが1つだけあることに注意してください-WordPressは通常これを既に書き込みます。)

1
MrWhite

また、.htaccessの書き換えルールを次の行に置き換えることで、このソリューションを試すことができます。

Redirect /page1/   http://site.example.com/page1/
0
himeshc_IB