Htaccess重定向特定页面和查询字符串变量

时间:2013-10-14 14:21:24

标签: php regex apache .htaccess mod-rewrite

我正在尝试使用符合这些特定要求的.htaccess文件进行重定向:

  1. 页面/脚本名称为 foo.php
  2. 查询字符串必须包含 p = 1
  3. 可能存在任意数量的其他查询字符串变量
  4. 如果满足这些条件,您应该被重定向到:/ new-url /

    这是我提出的不起作用的。它匹配并重定向/foo.php但不是/foo.php?p=1或/foo.php?p=1&x=5

    RewriteEngine On
    RewriteBase /
    
    RewriteCond %{REQUEST_FILENAME} ^foo\.php$ [NC]
    RewriteCond %{QUERY_STRING} (^|&)p=1(&|$) [NC]
    RewriteRule . new-url/? [R=301,L]
    

    非常感谢您的任何帮助!

1 个答案:

答案 0 :(得分:1)

你可以尝试:

RewriteCond %{QUERY_STRING} (^|&)p=1(&|$) [NC]
RewriteRule (^|/)foo\.php$ /new-url/? [R=301,L,NC]

还要在其他浏览器中对其进行测试,以避免因R=301

导致的浏览器缓存问题