2016-07-08 14 views
0

私はWordPressでウェブサイトを構築していますにリダイレクトし、私のクライアントは、彼女が301は、.htaccessの謎

古い打ち上げ後のページ名とエイリアスを変更したいことを決定しました:http://www.successfulspeakernow.com/speech-doctor

新しい:http://www.successfulspeakernow.com/executive-speech-doctor

Googleは既に古いURLを知っているので、.htaccessファイルに301リダイレクトを書く必要があります。

私は物事のカップルを試みたが、無駄にするので、誰もが(私は、ファイルの全体の内容をコピーした)以下の.htaccessファイルと間違っているものを私に伝えることができます:

# BEGIN WordPress 
<IfModule mod_rewrite.c> 
Options +FollowSymLinks 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
# hieronder van niet-www naar www 
RewriteCond %{HTTP_HOST} !^www\. 
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
# hieronder van http naar https 
# RewriteCond %{HTTPS} off 
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R,L] 
RedirectMatch 301 ^/speech-doctor/ http://www.successfulspeakernow.com/executive-speech-doctor/ 
RedirectMatch 301 ^/speech-doctor-written-review-plus-2-hour-consult http://www.successfulspeakernow.com/executive-speech-doctor/written-review-plus-2-hour-consult 
RedirectMatch 301 ^/speech-doctor-written-review-only http://www.successfulspeakernow.com/executive-speech-doctor/written-review-only 
RedirectMatch 301 ^/speech-doctor-2-hour-consult http://www.successfulspeakernow.com/executive-speech-doctor/2-hour-consult 
</IfModule> 

# END WordPress 


AddHandler application/x-httpd-php56 .php .php5 .php4 .php3 

すべてのヘルプ、 とても有難い!

トム

答えて

0

私はあなたの提案に、RedirectMatchルールをテストし、彼らは私のテスト・システム上で完全に働きました。また、あなたは実際に何が働いていないかは言いませんでした。それはまったくリダイレ​​クトされますか?エラーを投げますか?元のページに移動しますか?継続的にループしますか? etc

ブラウザのキャッシュがきれいであることを確認しますか?リダイレクトのオン/オフを切り替えるには、きれいなブラウザキャッシュが必要です。そうしないと、ブラウザは既に知っているリダイレクトを自動的に使用します。

はまた、あなたがワードプレスでそれをやっているならば、はい、.htaccessファイルでそれを行うことが可能であるが、それは容易に非常に多くのですあなたがプラグインを使用する場合

https://wordpress.org/plugins/redirection/

願って助け、


ハウディ、 今日はこの中にさらに見ていた、あなたの問題は、おそらくあなたのサーバー上で利用可能ではないmod_aliasに関連しています。 @jordiは正しいです

RedirectMatchはmod_aliasにあります。ここで、RewriteRuleはmod_rewriteです。 I無効mod_alias場合、サーバは、このApacheのログにエラー /.htaccessと一緒に、に、RedirectMatchディレクティブのために404を返しました:おそらくサーバ構成に含まれていないモジュールによってスペルミスまたは定義され、無効なコマンド「に、RedirectMatch」

Jordi Nebotsの応答は正確です。

+0

こんにちは、URLは私に404ページを与えました。だから、私が望むものはほとんどありません。 私は何回もキャッシュをクリーニングし、他のブラウザも試しました。 より速い方法があれば、私はプラグインを使いたくありません。 –

+0

Howdy、 今日このことを詳しく見てみましょう。 – Dave

0

正規表現では先頭にスラッシュを使用しないでください。また、オプションの末尾にスラッシュを付けます。

RedirectMatch 301 ^speech-doctor-written-review-plus-2-hour-consult/? http://www.successfulspeakernow.com/executive-speech-doctor/written-review-plus-2-hour-consult 
RedirectMatch 301 ^speech-doctor-written-review-only/? http://www.successfulspeakernow.com/executive-speech-doctor/written-review-only 
RedirectMatch 301 ^speech-doctor-2-hour-consult/? http://www.successfulspeakernow.com/executive-speech-doctor/2-hour-consult 
RedirectMatch 301 ^speech-doctor/? http://www.successfulspeakernow.com/executive-speech-doctor/ 

編集:私はURLがスラッシュを付けずに訪問している場合、他のルールとの衝突を避けるために、あなたの最初の301への最後の位置を移動しました。

この4つのルールをRewriteBase以下に移動してください。

RewriteBase/
# Move 301 redirects here # 
RewriteRule ^index\.php$ - [L] 

あなたのコメントに答えるために:もし(例えばので、私は最初のルールを下に移動したを)あなたは、URLにアクセスしてください。

http://www.successfulspeakernow.com/speech-doctor-2-hour-consult

このURLは両方^speech-doctor-2-hour-consult/?^speech-doctor/?ルールにマッチします。したがって、RedirectMatch 301 ^speech-doctor/?が最初のリダイレクションルールである場合、ルールは上から下に処理されるので、http://www.successfulspeakernow.com/speech-doctor-2-hour-consulthttp://www.successfulspeakernow.com/executive-speech-doctor/にリダイレクトされます。

+0

こんにちはジョーディ、努力のためにおかげで、これは動作しません。すべてのリンクは404ページに移動します。第二に、音声医師301を一番下に移動する理由を理解できません。他の人はURLの残りの部分にスラッシュを使用しないため、完全に異なるURLと見なされます。最後に、私は考えていました:.htaccessファイルに、ルールが動作しないようにするための別のものがありますか? –

+0

Please @ThomsterdamWebDesign、私の編集した答えを見てください。 –

+0

こんにちはJordi、Thanxあなたの説明のために。あなたはリダイレクトの順序について正しいです。それでも、リダイレクトはまだ機能しません。 .htaccessファイルに、ルールの動作を妨げる何か他のものがありますか?それともうまくいかないのか? –

0

代替方法として、RewriteRuleを使用してリダイレクトを試みたことがありますか?それは、私は通常仕事だ...

RewriteRule ^speech-doctor-written-review-plus-2-hour-consult/? http://www.successfulspeakernow.com/executive-speech-doctor/written-review-plus-2-hour-consult [R=301,L] 
RewriteRule ^speech-doctor-written-review-only/? http://www.successfulspeakernow.com/executive-speech-doctor/written-review-only [R=301,L] 
RewriteRule ^speech-doctor-2-hour-consult/? http://www.successfulspeakernow.com/executive-speech-doctor/2-hour-consult [R=301,L] 
RewriteRule ^speech-doctor/? http://www.successfulspeakernow.com/executive-speech-doctor/ [R=301,L] 

はまた、私はあなたが本当にmod_rewriteは、Apacheで有効になっていると、あなたの.htaccessファイルが右、処理されているチェックしたと仮定しますか?

+0

私はこれをまっすぐにしましょう:RewriteRuleではmod_rewriteが必要ですか?リダイレクトではmod_rewriteは必要ありませんか?私が前に書いたように、私の質問では、.htaccessファイル全体をコピーして、私は上に尋ねました。私の.htaccessファイルには何かがありませんか?私は.htaccessの専門家ではないので、私と一緒にいてください。 ... –

+0

'RewriteRule'には' mod_rewrite'が必要です。 'RedirectMatch'には' mod_alias'が必要です。 **しかし、**あなたのコードはすべて '' IfModule mod_rewrite.c ''ブロックの内側にあるので、** mod_rewriteを有効にしないと、あなたの '.htaccess'には何も処理されません。 –

関連する問題