我有以下URL:
http://www.efilmsworld.com/film.php?url=blended-film-2014
我在.htaccess
中使用以下内容:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)'.html$ /film.php?url=$1 [L,QSA]
将我的url重写为:
http://www.efilmsworld.com/blended-film-2014.html
在此之前一切都很好。但问题是我有两个工作的url,它重复的内容,这是不好的:
efilmsworld.com/film.php?url=blended-film-2014
efilmsworld.com/blended-film-2014.html
所以我需要删除查询字符串url,如:
efilmsworld.com/film.php?url=blended-film-2014
添加
RewriteCond %{THE_REQUEST} ^(GET|POST)' /film'.php'?url=(.*)' HTTP
RewriteRule ^ /%2.html? [R=301,L]
到你的htaccess将解决这个问题。
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^(GET|POST)' /film'.php'?url=(.*)' HTTP
RewriteRule ^ /%2.html? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)'.html$ /film.php?url=$1 [L,QSA]
会发生什么
- 如果输入
efilmsworld.com/film.php?url=blended-film-2014
,则url将被重写为efilmsworld.com/blended-film-2014.html
,然后无声地重写(即地址栏中的url不改变)回到efilmsworld.com/film.php?url=blended-film-2014
,因此内容仍然显示。 - 如果输入
efilmsworld.com/blended-film-2014.html
,它将被静默重写为efilmsworld.com/film.php?url=blended-film-2014
(这是您已经在做的)。 -
[R=301]
标志告诉浏览器(和搜索引擎)url已经更改,现在可以在sometitle.html
中找到。该页面现在只显示一次,所以没有更多的重复内容。
编辑:根据评论请求。
RewriteCond %{THE_REQUEST} ^(GET|POST)' /video'.php'?url=(.*)' HTTP
RewriteRule ^ /video/%2.html? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^video/([^/]*)'.html$ /video.php?url=$1 [L,QSA]