Url parameter gibt 404 fehler aus


#1
Hallo,
ich arbeite gerade an einem Router und der soll auch Url paramter klarkommen.
Mein Problem ist dass zwar die Parameter nur aus folgenden Urls aus dem Routing entfernt werden: www.example.com/seite?testParam1=zero&testParam2=ParamWert
Dadurch wird die seite mit dem alias seite geladen, wenn allerdings wie es Facebook es macht an die Domain ihre Parameter wie www.example.com?facebookParam=hallo
daran hängt kommt immer die 404 Fehlermeldung, da ich diese Parameter nicht aus der Url bekomme

Meine Methode
PHP:
   /**
     *  Return current Url for Router
     *
     * @author Sebastian Kiefer
     * @return string
     * @param null
     * @version 0.1.1
     * @return string
     */
    public function getUrl() {
        $uri = $this->server('QUERY_STRING');
        if (false !== $pos = strpos($uri, '&')) {
            $uri = substr($uri, 0, $pos);
            return $uri;
        }
        else{
            return $uri;
        }
    }
Kennt sich damit einer aus?
Vielen Dank im Vorraus
 

Yaslaw

n/a
Moderator
#2
Ich versteh nur Bahnhof.
Irgend ein Alias, keine Ahnung woher, beinhaltet eine Seite.
Das scheint dann Facebook zu sein. Oder example.com. Da werden dann wieder Paramter angehängt wie in deinem zweiten Beispiel. Das führt dann zu einem 404er? Dann ist example.com ungültig.

Zeig doch mal die URL, wie du sie eingibst und was daraus gemacht wird. Und was daraus gemacht werden soll.

Also etwa so:
Meine URL: mysite.com/seite?id=1
Mein Code macht daraus :mysite.com?abc=def
ABer eigentlich will ich: site.com?id=1
 
#3
Erstmal danke,
ich benutze $_SERVER['QUERY_STRING'] für meinen Router
und meine Url für die Kundenseite ist mysite.com/kunden?id=1 mit dem Parameter id
Der wird herausgefilter durch die Methode getUrl da der Router nur was mit kunden anfangen kann,
wenn meine Url mysite.com/?id=1 lautet funktioniert die methode nicht sondern er routet id=1 und ich kann es nicht herausfiltern.
 
#7
mysite.com/id=1 ist so keine gültige Adresse
So ist es nicht gemeint, die Startseite wird geroutet wenn die url mysite.com ist, wenn zb. die Url mysite.com/kunden lautet wird die kunden seite geladen, wenn die Url mysite.com/kunden?param=123 ist wird ?param=123 entfernt und somit nur kunden an den Router übergeben. Nur wenn jetzt die Url mysite.com/?param123 lautet wird mysite.com/param123 an den router übergeben aber ich möchte in dem fall das er ?param=123 abhängt und die Startseite lädt
 

Yaslaw

n/a
Moderator
#8
Ja. Aber hast du eine .htaccess Datei? Normalerweise macht man solche Sachen über eine .htaccess und nicht über php.
Der Apache kann eigentlich mit mysite.com/kunden gar nicht viel anfangen. .htaccess routet das gemäss den Einstellungen weiter bevor eine PHP-Datei zum Zug kommt.
 
#9
Danke @Yaslaw für deine Hilfe,
ich habe es jetzt so hinbekommen:
PHP:
/**
     *  Return current Url for Router
     *
     * @author Sebastian Kiefer
     * @return string
     * @param null
     * @version 0.1.2
     * @return string
     */
    public function getUrl() {
        $uri = $this->server('QUERY_STRING');
        $str = $this->server('REQUEST_URI');
            
            if (false !== $pos = strpos($uri, '&')) {
                $uri = substr($uri, 0, $pos);
                return $uri;
            }
            else{
                $query = explode("?", $str);

                unset($query[1]);
                if($query[0] == INSTALLDIR){
                   return "";
                }
                else{
                    return $this->server('QUERY_STRING');
                }
            }
    }
 
#10
Ja. Aber hast du eine .htaccess Datei? Normalerweise macht man solche Sachen über eine .htaccess und nicht über php.
Der Apache kann eigentlich mit mysite.com/kunden gar nicht viel anfangen. .htaccess routet das gemäss den Einstellungen weiter bevor eine PHP-Datei zum Zug kommt.
Ich habe eine .htaccess Datei deswegen klappt es auch mit mysite.com/kunden, nur das routing mit den parametern klappte nicht:)