2016-11-12 43 views
0

我正在處理我的網站鏈接體系結構。我想重定向我的.htaccess已重寫的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] 

所以爲了將/profile-info/重定向到新的URL:/profile/。我結束了這個代碼。但是它會將/profile/重定向到/profile-info/

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

目前還不清楚你問什麼。請明確說明傳入的請求是什麼以及內部應該調用哪個最終目標。 – arkascha

+0

對不起,但這些「to」語句是不明確的,不同的人從不同的側面看「重寫」一詞。所以再一次:接收到的請求是什麼,內部目標是什麼? – arkascha

+0

對不起,您收到的請求是什麼意思?直到現在,website.com/models.php被重寫爲website.com/profile-info,但現在我希望將website.com/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] 

這是一個兩步策略:

  1. 將指向/profile-info的「舊」鏈接重定向到新的/profile
  2. 內部重寫/profilemodels.php

您可能需要改變RewriteMap,這顯然取決於你的情況。


而且一般提示:你應該總是喜歡在http服務器主機配置,而不是使用.htaccess樣式文件中這樣的規則。這些文件出了名的錯誤容易出錯,難以調試,而且他們真的放慢了服務器速度,通常沒有理由。他們僅適用於你的情況而不是可以訪問主機配置(閱讀:真正便宜的主機提供商),或者如果應用程序需要編寫自己的規則(這是一個明顯的安全噩夢...)。

+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]