将www重定向到非www正在丢失我的其他RewriteRule

时间:2013-08-20 18:46:25

标签: apache .htaccess

我的.htaccess文件中包含此代码。

我的网址很好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]

2 个答案:

答案 0 :(得分: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条件的条件不同。 (除非你想要那样)。

答案 1 :(得分:0)

尝试类似:

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