Apache重写:dir / file.php?foo = bar& name = val - > ?file.php newparam = DIR&安培;富=栏&安培;名称= VAL

时间:2010-12-09 13:43:13

标签: regex .htaccess mod-rewrite url-rewriting apache2

以下网址重写的.htaccess代码是什么:

www.example.com/dir/file.php

进入

www.example.com/file.php?newparam=dir

www.example.com/dir/file.php?param1=val1&param2=val2

www.example.com/file.php?newparam=dir&param=val1&param2=val2

提前致谢。

1 个答案:

答案 0 :(得分:0)

尝试以下操作,让我知道它是否有效:

RewriteEngine on
RewriteBase /

# Allow files that exist to bypass rewrites
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# Rewrite remaining files
RewriteRule ^/([-a-zA-Z0-9_]+)/([-a-zA-Z0-9_]+\.php)$ /$2?newparam=$1 [L,QSA]

这只允许dirfile.php包含字母数字字符,下划线和短划线。

最终规则在正斜杠之间查找匹配两个路径组件的URI。第一个必须是给定集合[-a-zA-Z0-9_]+中的1个或多个字符,第二个必须相同,但以.php结尾。 ^$个字符与URI的正面和背面匹配。替换说,将第二个括号内的组(file.php部分)放在前面,并将第一个括号内的组(dir部分)作为名为newparam的参数。最后的[L,QSA]表示如果匹配则这是最后[L]规则,因此请进一步停止匹配并执行重定向,[QSA]表示“查询字符串追加”,这会添加原始查询字符串再次结束,将其关闭将删除原始查询字符串。