重写页面& .htacess中单个URL的所有查询参数

时间:2018-04-09 18:26:45

标签: regex apache .htaccess

已阅读过很多帖子,但仍无法弄明白。

我有一个使用大量查询参数的旧页面。我想将流量重定向到此页面到我的主页。当参数存在时,正常的301重定向不起作用。

我想:

  • /page.php
  • /page.php?a=1
  • /page.php?a=2

全部重定向到example.com /.

此代码已经在我的htaccess中了:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

我在下面立即添加了以下内容:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/page\.php$
RewriteCond %{QUERY_STRING} a=(.*)$
RewriteRule ^(.*)$ https://www.example.com/? [R=301,L]
Redirect 301 /page.php https://www.example.com/

发生的事情是只触发了最后一行。如果我导航到example.com/page.php,它将按预期重定向。

但如果我导航到example.com/page.php?a=1,那么它会重定向到example.com/?a=1并给我404错误。

有没有人有解决方案?感谢

1 个答案:

答案 0 :(得分:1)

无需捕获query string,因为您希望将所有流量重定向到page.php,包括page.php?query,因此,只需匹配此页面URI:

RewriteEngine On
RewriteCond %{REQUEST_URI} ^/page\.php$
RewriteRule ^(.*)$ https://www.example.com/? [R=301,L]

注意:清除浏览器缓存然后测试