htaccess查询字符串删除

时间:2014-05-10 20:26:12

标签: php apache .htaccess mod-rewrite

我有以下网址:

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]

将我的网址重写为:

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

1 个答案:

答案 0 :(得分:0)

添加

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,则网址将被重写为efilmsworld.com/blended-film-2014.html,然后默默重写(即地址栏中的网址不会更改)返回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]标志告诉浏览器(和搜索引擎)网址已更改,现在可以在sometitle.html找到。该页面现在只显示一次,因此不再有重复的内容。
  4. 编辑:根据评论请求。

    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]