php.de

Zurück   php.de > Webentwicklung > Server, Hosting und Workstations

Server, Hosting und Workstations Server-Konfigurationsdateien (.htaccess/httpd.conf) und Arbeiten auf Serverebene

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 04.01.2011, 19:48  
Neuer Benutzer
 
Registriert seit: 04.01.2011
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
Atem befindet sich auf einem aufstrebenden Ast
Standard [Erledigt] mod_rewrite umleitungsfehler

Hallo,

ich habe nun eine Zeit lang die Sufu gequält und leider nicht genau das Problem gefunden, was ich habe. (nur ähnliche)

Auf meiner Webseite sind sehr sehr sehr viele Parameter an den URL dran, was ich unterbinden wollte, um es alles SOE freundlicher zu machen.

nehmen wir uns erstmals das Beispiel der nicht so tollen URL vor.

http://www.example.com/index.php?tex...=34&comment=32

Um ehrlich zu sein, nicht so das wahre.

daher habe ich mit der RewriteRule experimentiert und

http://www.example.com/34/32.html

erschaffen.

Nun mein Problem, denn jetzt ist die seite unter beiden URLs erreichbar, was sehr kontraproduktiv ist, da die unschönen Links jetzt schon zu haufe im google sind.
Daher dachte ich daran eine 301 Weiterleitung zu dem schönen link zu machen.

sprich google stößt auf
http://www.example.com/index.php?textseite=34
und wir zu
http://www.example.com/34.html
geschickt

dazu hatte ich folgende idee
1. überprüfe das du NICHT auf einer 0-n.html datei bist
2. überprüfe ob der pararmeter textseite einen wert hat
3. schreibe die url dann um und schicke google und alle anderen die ggf verlinkt sind weiter

dazu habe ich mir mal was zusammengebastelt

Code:
RewriteCond %{REQUEST_URI} !^([0-9]+).html$
RewriteCond %{QUERY_STRING} ^textseite=([0-9]+)$
RewriteRule ^.*$ http://www.example.com/%1.html? [L,R=301]
Ich musste feststellen das es im Grunde meinen Anforderungen gerecht wird, wenn da nicht der Fehler ist.
und zwar
ändert er die URL richtig um und der 301 vermerk stimmt wie ich auf ner webseite testenlassen habe auch.

jedoch wird aus irgendeinem Grunde diese Umleitung nie beendet und wiederholt sich endlos, was zu folge hat, dass ich mit einem umleitungsfehler bestraft werde.

möglicher weise ist es auch ein Folgefehler aus anderen Angaben der htaccess, daher hier ein Ausschnitt aus der htacess welche mit Umleitungen zu tun hat

Code:
# Automatisch www vor URL schreiben
RewriteCond %{HTTP_HOST} !^www\.example\.com$ [NC]
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

# Regeln
RewriteRule ^1/28/([^/]*)\.html$ index.php?textseite=28&comment=$1 [L]
RewriteRule ^([^/]*)/([^/]*)\.html$ index.php?textseite=$1&seite=$2 [L]
RewriteRule ^([^/]*)\.html$ index.php?textseite=$1 [L]

# Umleiten auf schöne URL
RewriteCond %{REQUEST_URI} !^([0-9]+).html$
RewriteCond %{QUERY_STRING} ^textseite=([0-9]+)$
RewriteRule ^.*$ http://www.example.com/%1.html? [L,R=301]
weiter oben wird als rewrite base / angegeben und rewrite_mod ist on

wäre euch sehr sehr sehr Zu dank verpflichtetet, wenn mir jemand helfen könnte, denn bei vielen anderen Foren habe ich seit schon fast 2 Wochen keine Antwort bekommen.

Grüße
--
Ich
Atem ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 05.01.2011, 12:21  
Erfahrener Benutzer
 
Registriert seit: 01.09.2010
Beiträge: 4.563
PHP-Kenntnisse:
Fortgeschritten
eagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Menscheagle275 ist ein sehr geschätzer Mensch
Standard

wenn sich da mal deine beiden rewrite-Rules nicht gegenseitig in die Quere kommen ..

einerseits musst du ja irgendwo aus

www.example.com/34/32.html wieder deinen eigentlichen Aufruf machen (weil deine Seite ja wirklich mit www.example.com/index.php?page=34&action=32 aufgerufen wird )

und gleichzeitig willst du die alten google-Links die ja schon die richtige Struktur haben umleiten auf deine "neuen schönen Links" - und diese Umgeleiteten Links müssen dann doch wieder zurückgewandelt werden .... also dreht sich mod_rewrite im Kreise und formt die Url mal in die eine Richtung, mal in die andere Richtung....
__________________
"Irren ist männlich", sprach der Igel und stieg von der Drahtbürste
eagle275 ist offline   Mit Zitat antworten
Alt 05.01.2011, 15:53  
Neuer Benutzer
 
Registriert seit: 04.01.2011
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
Atem befindet sich auf einem aufstrebenden Ast
Standard

hmmm klingt irgendwie logisch, aber wie kann ich das unterbinden?

Hast du vllt ne Idee? oder da ich mich mit mod_rewrite so gut wie gar nicht auskenne vllt sogar n kleinen Codeschnipsel?
Atem ist offline   Mit Zitat antworten
Alt 06.01.2011, 17:22  
Erfahrener Benutzer
 
Benutzerbild von lstegelitz
 
Registriert seit: 07.09.2009
Beiträge: 4.005
PHP-Kenntnisse:
Fortgeschritten
lstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nettlstegelitz ist einfach richtig nett
Standard

Das "alte" Format wird immer funktionieren und daran gibt es nichts zu rütteln.
mod_rewrite schreibt lediglich das "neue" Format auf das "alte" Format um (und nur dafür muss gesorgt werden).
__________________
Über 90% aller Gewaltverbrechen passieren innerhalb von 24 Stunden nach dem Konsum von Brot.
lstegelitz ist offline   Mit Zitat antworten
Alt 06.01.2011, 21:48  
Neuer Benutzer
 
Registriert seit: 04.01.2011
Beiträge: 22
PHP-Kenntnisse:
Fortgeschritten
Atem befindet sich auf einem aufstrebenden Ast
Standard

Danke

Ich habe nun eine Alternativanwendung geschrieben, die meinen Bedürfnissen doch gerecht wird.

PHP-Code:
function umleiten()
    {
        
$url $_SERVER['REQUEST_URI'];
        if(
strpos($url,"textseite=") !== false)
            {
                if(isset(
$_GET['seite']))
                    {
                        
header ('HTTP/1.1 301 Moved Permanently');
                        
header ("Location: " whereami() . $_GET['textseite'] . "/" $_GET['seite'] . ".html");
                        exit;
                    }
                elseif(isset(
$_GET['comment']))
                    {
                        
header ('HTTP/1.1 301 Moved Permanently');
                        
header ("Location: 1/" whereami() . $_GET['textseite'] . "/" $_GET['comment'] . ".html");
                        exit;        
                    }
                else
                    {
                        
header ('HTTP/1.1 301 Moved Permanently');
                        
header ("Location: " whereami() . $_GET['textseite'] . ".html");
                        exit;
                    }
            }
    }
umleiten(); 
Request URI im php scheint andere Ergebnisse zurückzugeben als in der .htaccess
dort war es nun kinderleicht zu schauen ob textseite= in der Adresszeile steht. den Rest habe ich einfach aus den vorhandenen get Parametern gesogen.

Nun bekommt jede suchmaschine
301 Permanently Moved
verweisend auf das neue ziel.

Somit läuft alles wie gewünscht.
Atem ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Fehler: Umleitungsfehler marckannisgut PHP Tipps 2010 8 19.11.2010 15:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
owncloud umleitungsfehler, mod_rewrite umleitungsfehler, umleitungsfehler owncloud, owncloud fehler: umleitungsfehler, fehler: umleitungsfehler htaccess, mod rewrite umleitungsfehler, 301 umleitungsfehler, php umleitungsfehler, rewriterule umleitungsfehler, rewrite umleitungsfehler, fehler: umleitungsfehler owncloud, umleitungsfehler webseite, webseite umleitungsfehler, mod_rewrite immer auf die index umleiten, mod_rewrite google umleiten, mod_rewrite alles umleiten, mod_rewrite alles auf index.php umleiten, \owncloud umleitungsfehler\, owncloud umeitungsfehler, owncloud 4 umleitungsfehler

Alle Zeitangaben in WEZ +2. Es ist jetzt 23:05 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum