如何重定向以下网址 http://test.com/changefile.php?filename=top-ranked-colleges
到
http://test.com/top-ranked-colleges.php 使用htaccess重定向。
有人请帮助我。提前谢谢。
答案 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]
这是因为您无法使用RewriteRule
或RedirectMatch