万维网。 301重定向参数

时间:2013-10-13 08:59:10

标签: .htaccess mod-rewrite redirect web

我目前使用以下重定向来使网址看起来更好:

RewriteRule profile/(.*) index.php?id=$1
(Result: domain.co.uk/profile/00000001)
From index.php?id=00000001

我想301 将没有www的网址重定向到www。并保持上述个人资料重定向

RewriteCond %{HTTP_HOST} !^www\.

RewriteRule ^(.*)$  http://www.%{HTTP_HOST}/$1 [R=301,L]

然而,当使用它时,URL就像:

http://www.DOMAIN.co.uk/ index.php / 00000001 ?id = 00000001

我认为可以做到这一点,这是否需要根据我的需要定制,或者是否有某些东西丢失了?

最终结果理想情况下会重写:

  

domain.co.uk/profile/00000001

  

www.domain.co.uk/profile/00000001

1 个答案:

答案 0 :(得分:0)

保持规则的正确顺序,即在内部重写之前保留外部重定向。

所以这应该有效:

RewriteEngine On

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

# external redirect from actual URL to pretty one
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s/+index\.php\?id=([^\s&]+) [NC]
RewriteRule ^ %1? [R=301,L]

# internal forward from pretty URL to actual one
RewriteRule ^profile/(.+)$ index.php?id=$1 [L,QSA,NC]