.htaccess - 没有查询字符串的301重定向,请保留查询字符串

时间:2014-05-21 08:31:55

标签: .htaccess

我根据搜索引擎优化的目的为我的/index.php添加了301重定向。不幸的是,这可以防止任何参数被接受。

  • example.com/index.php应重定向到example.com
  • example.com/index.php?anything应留在example.com/index.php?anything
  • example.com/index.php?f=bar&b=foo应留在example.com/index.php?f=bar&b=foo

我的尝试修复如下:

RewriteCond %{THE_REQUEST} ^.*/index\.php
RewriteCond %{QUERY_STRING} ^$
RewriteRule ^(.*)index.php$ /$1 [R=301,L]

2 个答案:

答案 0 :(得分:0)

RewriteCond %{THE_REQUEST} \s\/index\.php\s
RewriteCond %{QUERY_STRING} =""
RewriteRule . http://${HTTP_HOST}/ [R=301,L]

答案 1 :(得分:0)

原来,该场景的答案是Deadooshka的答案和POST修复的组合。

RewriteCond %{THE_REQUEST} \s\/index\.php\s
RewriteCond %{QUERY_STRING} =""
RewriteCond %{REQUEST_METHOD} !POST
RewriteRule ^(.*)index.php$ /$1 [R=301,L]