0

我的 .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]
4

2 回答 2

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]

此外,您的条件仅适用于紧随其后的重写规则,因此第二个和第三个不具有相同的条件。(除非你希望它是那样的)。

于 2013-08-20T18:50:35.953 回答
0

尝试类似:

RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} ^foodzite.dk [NC]
RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
于 2013-08-20T18:49:25.810 回答