Problème avec htaccess



  • Bonjour,

    j'ai un problème avec le htaccess (je pense que mon problème vient de là)

    j'ai un script de membres avec un lien d'affiliation dans l'espace membres pour amener des personnes vers la page d'accueil de l'espace membre. Le script marche bien sur mon nas mais dès que je le mets en ligne (sur freeheberg et même sur ovh, le lien d'affiliation dirige tout droit vers la page 404.

    voici le code du htaccess :

    RewriteEngine On
    RewriteRule go/(.*) go.php?var1=$1&var2=$2

    voici le code de la page go.php qui sert pour le lien d'affiliation :

    <?php
    include_once ("common/config.php") ;
    include_once ("common/database.class.php") ;
    include_once ("common/common.class.php") ;

    $db = new database() ;
    $common = new common() ;

    $path = $_SERVER['REQUEST_URI'];
    $path = preg_replace("@.?(/go/.?)@","$1", $path);

    $var_array = explode("/",$path);

    /*
    http://www.mywebsite.com/go/path -> protected file downloads
    http://www.mywebsite.com/go/loch -> /index.php?ref=loch
    http://www.mywebsite.com/go/loch/home/ -> /?ref=loch
    */

    $var1 = $var_array[2]; /* download or username /
    $var2 = $var_array[3]; /
    empty or home. If home $var1 = username */

    // track affiliates from main index page

    if ($var2 == "home") {

    $member = $var1;

    // check to see if var1 is a member
    $q = "select * from ".$prefix."members where username='$var1'";
    $v = $db->get_a_line($q);
    $member_value = $v[username];
    $ppemail = $v[paypal_email];
    $member_name = $v[firstname]." ".$v[lastname];
    $member_email= $v;

    if($member_value == ""){
    //not a member
    echo "Sorry, you supplied an incorrect member value.";
    exit;
    }
    // check to see if member has set there paypal account
    if($ppemail == ""){

    $member = "admin";

    // get site settings for email to member
    $query = "select * from ".$prefix."site_settings where id='1'";
    $rst = $db->get_a_line($query);
    $loginurl = $http_path."member/login.php";
    $sitename = $rst[sitename];

    //get email settings
    $qquery = "select webmaster_email from ".$prefix."admin_settings where id='1'";
    $rslt = $db->get_a_line($qquery);
    @extract($rslt);

    $subject = "Missed Commission at $sitename";
    $body = "Hello $member_name

    You just refered someone to $sitename with your affiliate URL,
    unfortunetly since you do not have your paypal email account updated in your profile,
    you will not get commissions on any sale that may be generated.

    Please log into your members area and update your paypal email address.

    Login URL: $loginurl

    thank you
    admin
    ";

    $header .= "From: ".$sitename." <".$webmaster_email.">";
    @mail($member_email,$subject,$message,$header) ;

    }

    $call = $http_path."index.php?ref=$member";
    header("Location: ".$call);
    exit;
    }

    // protected downloads

    if($var1 == "downloads"){

    if($var2 == ""){
    echo "INVALID URL PASSED<br>";
    echo "No filename specified.";

    exit;
    }else{
    $q = "select * from ".$prefix."admin_settings";
    $v = $db->get_a_line($q);
    $down = $v[prot_down];

    $file = $var2;

    $call = $http_path.$down."/".$file;
    header("Location: ".$call);
    }

    }

    if ($var2 == "")
    {
    if($var1 == "")
    {
    echo "INVALID URL PASSED<br>";
    echo "You much supply the correct variable after /go/.";
    exit;
    }

    $member = $var1;

    // check to see if var1 is a member
    $q = "select * from ".$prefix."members where username='$var1'";
    $v = $db->get_a_line($q);
    $member_value = $v[username];

    if($member_value == ""){
    //not a member
    echo "Sorry, you supplied an incorrect member value.";
    exit; }

    $call = $http_path."index.php?ref=$member";
    header("Location: ".$call);
    exit;

    }

    echo "Nothing to see here!";

    ?>

    le script est livré avec plusieurs codes pour l'htaccess de différents hébergements mais je les ai tous essayé et aucun ne marche

    Quelqu'un aurait-il une solution ? Merci
    Cordialement,
    Agnès Laura



  • Après quelques test, j'ai remarquer que si dans chaque partie dans le rewriteRule à le même "nom" (ici go/ et go.php), ça ne marche pas. Suffit de changer l'un des deux pour que ça marche, du moins c'est ce qui se passe sur le NS2…

    exemple:

    RewriteEngine On
    RewriteRule ^go/(.*)$ go2.php?var1=$1&var2=$2 [L]
    
    

    Un mauvais de réglage de Apache peut-être…

    Au passage, pourquoi tu as un "$2" alors que tu n'as qu'une seule fois les parenthèse "( )", ton "var2" sera toujours vide avec ça :o



  • Bonjour,

    Merci de votre réponse,
    je vais faire quelques test dans la soirée, je reposterai pour vous dire si ça marche

    Cordialement
    Agnès Laura



  • Bonjour,

    Je viens de tester, ça ne marche pas
    j'ai modifié aussi comme ça :
    RewriteEngine On
    RewriteRule ^go/(.)$(.)$ go.php?var1=$1&var2=$2 [L]

    mais ça ne marche pas non plus
    Une autre solution ?
    Cordialement,
    Agnès Laura

    Ce que j'ai du mal à comprendre aussi, c'est que ça marche sur mon nas (qui n'est pas vraiment de l'hébergement ultra sophistiqué) et que ça ne marche pas lorsque le script est en ligne

    Au cas où, voici les différents codes proposés par le concepteur du script pour le htaccess (y en a aucun qui marche mais peut-être que ça vous donnera une idée) :

    1&1:

    Code:
    <Files go>
    ForceType x-mapp-php4
    </Files>

    midphase, anhosting, Bluehost:

    Code:
    <FilesMatch go>
    SetHandler application/x-httpd-php5
    </FilesMatch>

    Godaddy, TrustaHost:

    Code:
    Options +FollowSymLinks
    Options -MultiViews
    RewriteEngine on

    RewriteBase /

    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d

    RewriteRule go/(.*) go.php?var1=$1&var2=$2 [L]
    Change the file named "go" to "go.php"

    Reseller Panel:

    Code:
    RewriteEngine on
    RewriteRule go/(.)(.) go.php?var1=$1&var2=$2
    Change the file named "go" to "go.php"

    Merci


Se connecter pour répondre
 

Il semble que votre connexion ait été perdue, veuillez patienter pendant que nous vous re-connectons.