Htaccess和PHP重定向,未找到页面
我的重定向有一个小问题,我使用PHP将301重定向到此URL(变量来自搜索表单): 从这个丑陋的URL:Htaccess和PHP重定向,未找到页面,php,apache,.htaccess,mod-rewrite,redirect,Php,Apache,.htaccess,Mod Rewrite,Redirect,我的重定向有一个小问题,我使用PHP将301重定向到此URL(变量来自搜索表单): 从这个丑陋的URL: ddddd.com/ads.php?type=CATEGORY&c=CITY&var1=1&var2=2 在我的头文件中,我有以下重定向代码: function redirect() { if($_SERVER["QUERY_STRING"]=="") return false; if(strpos($_SERVER["REQUEST_URI"]
ddddd.com/ads.php?type=CATEGORY&c=CITY&var1=1&var2=2
在我的头文件中,我有以下重定向代码:
function redirect() {
if($_SERVER["QUERY_STRING"]=="") return false;
if(strpos($_SERVER["REQUEST_URI"], '/ads.php')!==false) return false;
$rewrittenURL = "ads-";
$appendVars = "?";
if(isset($_GET["type"])&&$_GET["type"]!="") $rewrittenURL .= $_GET["type"]."-";
if(isset($_GET["c"])&&$_GET["c"]!="") $rewrittenURL .= $_GET["c"]."/";
if(isset($_GET["var1"])&&$_GET["var1"]!="") $appendVars .= "var1=".$_GET["var1"]."&";
if(isset($_GET["var2"])&&$_GET["var2"]!="") $appendVars .= "var2=".$_GET["var2"]."&";
[... more vars here ...]
$appendVars = substr($appendVars, 0, -1);
header('HTTP/1.1 301 Moved Permanently');
header('Location: http://ddddd.com/'.$rewrittenURL.$appendVars);
}
if(PAGE=="ads.php") redirect();
我的htaccess如下所示:
RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} ^type=([^&]+)&c=([^&]+)&?(.*)$
RewriteRule ^ads.php$ /ads-%1-%2/?%3 [L,R=301]
我得到一个无限循环:)我也试过这个:
RewriteRule ^ads-(.*)-(.*)/(.*)$ ads.php?tip=$1&j=$2&$3 [QSA,L]
同样的循环。。。我需要经验丰富的人的帮助:)
谢谢大家! 您可以在htaccess中完成这一切,只需将此代码放入其中(您不再需要PHP)
RewriteRule ^ads-(.*)-(.*)/(.*)$ ads.php?tip=$1&j=$2&$3 [QSA,L]
RewriteEngine on
RewriteCond %{THE_REQUEST} \s/app/ads\.php\?type=([^&]+)&c=([^&]+)&?([^\s]+)?\sHTTP/ [NC]
RewriteRule . /app/ads-%1-%2/?%3 [R=301,L]
RewriteRule ^ads-([^\-]+)-([^\-]+)/$ /app/ads.php?type=$1&c=$2 [L,QSA]