htaccess重定向查询字符串

时间:2011-06-17 09:03:42

标签: php .htaccess mod-rewrite

如何重定向以下网址 http://test.com/changefile.php?filename=top-ranked-colleges

http://test.com/top-ranked-colleges.php 使用htaccess重定向。

有人请帮助我。提前谢谢。

2 个答案:

答案 0 :(得分:2)

试试这个

RewriteCond %{QUERY_STRING} ^filename=(.*)$
RewriteRule .* http://test.com/%1.php? [R=301,L]

http://test.com/changefile.php?filename=top-ranked-colleges更改为http://test.com/top-ranked-colleges.php

RewriteCond %{REQUEST_URI} ^/(.*).php$
RewriteRule .* http://test.com/changefile.php?filename=$1 [L]

http://test.com/top-ranked-colleges.php更改为http://test.com/changefile.php?filename=top-ranked-colleges

答案 1 :(得分:1)

确实工作:

RewriteCond %{REQUEST_URI}  ^/changefile\.php$
RewriteCond %{QUERY_STRING} ^filename=([0-9a-z_-]+)$
RewriteRule ^(.*)$ http://website.com/%1.php? [R=301,L]

解释

%1来自:RewriteCond%{QUERY_STRING} ^ filename = ([0-9a-z _-] +) $

RewriteRule上有?会停止添加到重定向的原始查询字符串

如果被调用的文件是changefile.php,并且它的查询字符串中包含filename =,则使用%1作为要转到的页面进行重定向。

如果您使用RewriteBase,您还需要添加它:

e.g:

RewriteBase /test/

RewriteCond %{REQUEST_URI}  ^/test/changefile\.php$

有效:

RewriteRule ^changefile.php?filename=([a-z0-9-]+)$ http://test.com/$1.php? [R=301,L]

这是因为您无法使用RewriteRuleRedirectMatch

检查查询字符串