4

アドレス バーに表示される URL を から に変更しようとしてmysite.com/blog/wedding-hair/mysite.com/services/wedding-hair/ます.htaccess

以下からの回答を使用:

.htaccessファイルに追加しました。これが.htaccessファイルです。最後の書き換えルールを追加しました。

Options -Indexes
RewriteEngine on
RewriteCond %{HTTP_HOST} ^mysite.com$
RewriteRule ^/?$ "http\:\/\/www\.mysite\.com" [R=301]
RewriteRule ^blog/(.*)$ /services/$1 [L]

www 以外のリダイレクトは機能しますが、ブログ サービスの書き換えは機能しません。ディレクトリ名を逆にしたのではないかと思いましたが、変更してもうまくいきません。さまざまな組み合わせのすべてで、ディレクトリ名の前後に/を追加および削除しようとしました。追加してみました

RewriteCond %{THE_REQUEST} ^GET\ /blog/

私のRewriteRuleの前に。私が試したことは何も機能しませんでした。表示された URL はそのままですmysite.com/blog/wedding-hair/

これは誰かにとってはかなり簡単なことだと確信していますが、これを正しくすることはできません。どんな助けでも大歓迎です。

昨日これに取り組んでいたとき、ブログのディレクトリが WordPress のインストールであるという事実について考えていませんでした。ブログ ディレクトリにある .htaccess ファイルは次のとおりです。

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /blog/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /blog/index.php [L]
</IfModule>
# END WordPress

このファイルに RewriteRule を追加しようとしましたが、まだ満足していません。

4

2 に答える 2

4

ここでの問題はRewriteRule ^blog/(.*)$ /services/$1 [L]、URI が内部的に書き換えられるため、ブラウザはそれが発生していることを認識できず、これは完全にサーバー側で発生します。ブラウザーに実際に別の URL をロードさせたい場合は、Rリクエストをルートにリダイレクトするだけですが、www リダイレクトのようにフラグを使用する必要があります。「www」を含むようにすべてをリダイレクトする場合は、次のようにします。

RewriteCond %{HTTP_HOST} ^example.com$
RewriteRule ^(.*)$ http://www.example.com/$1 [L,R=301]

次に、「ブログ」を「サービス」にリダイレクトするには、Rフラグを追加します (またはR=301、リダイレクトを永続的にしたい場合)。

RewriteRule ^blog/(.*)$ /services/$1 [L,R]

また、何らかの理由でコンテンツが実際に /blog/にない場合は、内部的に書き直す必要があります

RewriteCond %{THE_REQUEST} ^GET\ /services/
RewriteRule ^services/(.*)$ /blog/$1 [L]

ただし、これは、コンテンツが実際には にある/blog/ものの、 にあるように見せたい場合のみです/services/

于 2013-05-20T22:22:56.467 に答える