URL重写如果是GET参数

时间:2015-07-11 16:22:00

标签: php .htaccess mod-rewrite

当我有一个特殊参数时,我想重定向/ RewriteRule一个Url 例如 /后/路径/?代码= 1 重定向到 /后/路径/

我不知道,但这里不起作用

RewriteEngine on
RewriteBase / 
RewriteRule ^.*code=1.*$ /post/path/ [L]

如果我运行http://domain.com/post/path/?code=4/oWTYGaoOsyts 没有什么变化。

[REQUEST_URI] => /post/path/?code=1/oWTYGaoOsyts
[SCRIPT_NAME] => /index.php
[PHP_SELF] => /index.php

2 个答案:

答案 0 :(得分:2)

要在网址中搜索参数,您需要使用RewriteCond和%{QUERY_STRING}:

RewriteCond %{QUERY_STRING} ^.*code=1.*$
RewriteRule .* /post/path/ [L]

来自documentation

  

语法:RewriteRule Pattern Substitution [flags]

     

在目录和   在htaccess上下文中,Pattern最初将与之匹配   文件系统路径,删除引导服务器的前缀后   当前的RewriteRule(例如" app1 / index.html"或" index.html"取决于   指定定义的位置)。

     

如果您希望与主机名,端口或查询字符串匹配,请使用   带有%{HTTP_HOST},%{SERVER_PORT}或。的RewriteCond   %{QUERY_STRING}个变量。

答案 1 :(得分:0)

因为您正在搜索code=1并且您通过了code=4

这应该适用于给定的输入

RewriteRule ^.*code=4.*$ /post/path/ [L]

请注意,它可以匹配code=40somecode=4

等非预期的网址