Htaccess查询字符串删除


htaccess query string removal

我有以下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]

会发生什么

  1. 如果输入efilmsworld.com/film.php?url=blended-film-2014,则url将被重写为efilmsworld.com/blended-film-2014.html,然后无声地重写(即地址栏中的url不改变)回到efilmsworld.com/film.php?url=blended-film-2014,因此内容仍然显示。
  2. 如果输入efilmsworld.com/blended-film-2014.html,它将被静默重写为efilmsworld.com/film.php?url=blended-film-2014(这是您已经在做的)。
  3. [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]