2016-11-12 11 views
0

私は自分のウェブサイトのリンクアーキテクチャに取り組んでいます。 .htaccessで既にリダイレクトされているURLを新しいURLにリダイレクトして、受信リンクをアクティブにしておきたい。書き換えられたURLを新しい書き換えられたURLにリダイレクト

www.website.com/profile-info/ www.website.com/profile/ から

これは私の実際の作業の.htaccessです:

ためにそう
Options +FollowSymlinks -MultiViews 
RewriteEngine On 

RewriteCond %{REQUEST_URI} /profile-info/?$ [NC] 
RewriteRule . models.php [L] 

へ新しいURL /profile-info//profile/にリダイレクトします。私はこのコードで終わります。ただし、/profile/から/profile-info/にリダイレクトされます。あなたはこれらの2つのルールを使用することができます

RewriteCond %{REQUEST_URI} /profile/?$ [NC] 
RewriteRule . /profile-info/ [L,R=302] 
+0

ご質問いただいた内容が不明です。入ってくるリクエストが何であるか、内部的にどのような最終的なターゲットを呼び出すべきかを明確に記述してください。 – arkascha

+0

申し訳ありませんが、それらの "to"ステートメントはあいまいです。異なる人々は、異なる側から "rewrite"という用語を見ています。だからもう一度:入ってくるリクエストは何ですか、内部のターゲットは何ですか? – arkascha

+0

ご迷惑をおかけして申し訳ありませんが、着信要求はどういう意味ですか?これまではwebsite.com/models.phpがwebsite.com/profile-infoに書き換えられましたが、website/profile-infoをwebsite.com/profileにリダイレクトします。 – casusbelli

答えて

1

を、私は、これはあなたが探しているものだと思う:

RewriteEngine On 
RewriteMap/
RewriteRule ^/?profile-info/?$ /profile [END,NE,R=301,QSA] 
RewriteRule ^/?profile/?$ models.php [L,QSA] 

それは2つの段階戦略です:

  1. /profile-infoを指す "古い"リンクを新しいにリダイレクトする
  2. 内部/profile
  3. models.phpから

を書き換えるあなたはRewriteMapを変更する必要があり、これは明らかにあなたの状況に依存します。


と一般的なヒント:あなたは、常に代わり.htaccessスタイルファイルを使用してのhttpサーバホストコンフィギュレーション内のこのようなルールを置くことを好む必要があります。これらのファイルは悪名高いエラーが発生しやすく、デバッグが難しく、サーバを遅くします。 ではなく、がホスト構成(本当に安価なホスティングプロバイダを参照してください)にアクセスできるか、またはアプリケーションが独自のルールを作成する必要がある場合(明白なセキュリティの悪夢です...)、状況にのみ提供されます。

+1

申し訳ありませんが、私は本当に上記の問題への接続を見ることができません。他のURLとは何が変わり、「うまくいかない」とはどういう意味ですか?あなたはそれについて別の質問を投稿することをお勧めします... – arkascha

1

Options +FollowSymlinks -MultiViews 
RewriteEngine On 

# redirect /profile-info to /profile 
RewriteRule ^profile-info/?$ /profile [R=301,NE,L] 

# rewrite /profile to /models.php 
RewriteRule ^/?profile/?$ models.php [L,NC]