Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Htaccess和PHP重定向,未找到页面_Php_Apache_.htaccess_Mod Rewrite_Redirect - Fatal编程技术网

Htaccess和PHP重定向,未找到页面

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"]

我的重定向有一个小问题,我使用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"], '/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]