2013-08-20 63 views
0

我有這個代碼在我的.htaccess文件中。重定向www到非www是丟失我的其他RewriteRule

我的網址是好的foodzite.dk/vis/1234567 當我進入www.foodzite.dk/vis/1234567我希望它重定向到foodzite.dk/vis/1234567 但我重定向到foodzite.dk/ shop.php?url = 1234567

它是如何不能結合重寫?

Options +FollowSymLinks 

RewriteEngine On 

RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 

RewriteRule ^vis/([a-z0-9\-_]+)/?$ show.php?url=$1 [L,QSA] 
RewriteRule ^postnr/([^/]*)$ postal.php?postal=$1 [NC,L] 
RewriteRule ^by/([^/]*)$ city.php?city=$1 [NC,L] 


RewriteCond %{HTTP_HOST} !^foodzite\.dk$ [NC] 
RewriteRule (.*) http://foodzite.dk/$1 [R=301,L] 

回答

1

你需要讓你的重定向規則你的路由規則以前。否則,URI被路由到您的PHP文件,然後重定向規則得到應用和URI暴露:

Options +FollowSymLinks 

RewriteEngine On 

RewriteCond %{HTTP_HOST} !^foodzite\.dk$ [NC] 
RewriteRule (.*) http://foodzite.dk/$1 [R=301,L] 


RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^vis/([a-z0-9\-_]+)/?$ show.php?url=$1 [L,QSA] 


RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^postnr/([^/]*)$ postal.php?postal=$1 [NC,L] 


RewriteCond %{SCRIPT_FILENAME} !-d 
RewriteCond %{SCRIPT_FILENAME} !-f 
RewriteRule ^by/([^/]*)$ city.php?city=$1 [NC,L] 

此外,您的條件只能獲得適用於緊隨其後的重寫規則,所以2樓和3不要沒有相同的條件。 (除非你想這樣)。

+0

這樣做了,謝謝 – Simsevu

0

試着這麼做:

RewriteCond %{HTTP_HOST} !^$ 
RewriteCond %{HTTP_HOST} ^foodzite.dk [NC] 
RewriteRule^http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L] 
+1

難道你沒有它倒退,我希望它刪除www。從我的網址 – Simsevu

+0

Gotcha。那麼是的,你基本上想要添加「www」。到第2行並刪除「www」。從第3行開始。 – Xorandnotor