Problem mit Redirect 301

djws

www.zocke.es
ID: 31169
L
20 April 2006
4.479
289
Hez Leute,

ich hab folgendes Problem:

Eine meiner Seiten hat, wenn man sie ueber die URL/index.php aufruft einen hoeheren PR als wenn man sie nur ueber die URL aufruft.
Ich moechte ja, dass die page nur ueber die URL gefunden wird und dass die index.php ueberhaupt nicht zu sehen ist.

Jetzt hatte ich mir schon ueberlegt die index.php in z.B. start.php umzubenennen und dann einen permanenten redirect per 301 auf die URL (ohne Dateinennung) per htaccess einzurichten, damit der PR von der index.php auf die URL uebergeht.
Ausserdem scheint google die URL und die index.php als 2 verschiedene Seiten zu fuehren, was ja zwangsweise auch gleich zu doppeltem content fuehrt, was google ja nicht gern hat und daher auch des oefteren abstraft.

Die Frage ist nur, wie loese ich dieses Problem am besten?
Ich muesste in der htaccess dann ja auch noch eine URL-Modifikation von index.php auf start.php machen oder?

Hoffe ihr versteht mein Problem und koennt mir ein paar hilfreiche Tipps geben.
 
Nein hab ich noch nicht ausprobiert. Aber wenn ich das auf meine Index.php anwende wirkt sich das nicht auch auf die Domain direkt aus?
 
Das mit der neuen Datei kannst du dir sparen. Einfach nur die korrekte Bedingung setzen, dann sollte es passen.

Code:
RewriteEngine On

RewriteCond %{REQUEST_URI} ^/index.php$
RewriteRule $ https://%{HTTP_HOST} [R=301,L]
 
Super graccem, das probier ich heute abends mal aus. Melde mich dann wieder ob's so geklappt hat oder nicht.
 
Sollte auch ohne ModRewrite möglich sein, per einfachem Redirect in der .htaccess
Funktionieren sollte die Lösung von Graccem allerdings, falls dein Script nicht auch modrewrite benötigt/verwendet.
 
Das mit dem einfachen Redirect Per htaccess hab ich schon versucht, bekam aber einen internen Server Error oder zu viele weiterleitungen
 
Internal Server Error = Du hast was falsch gemacht, wenn du grade an der .htaccess gefummelt hast.
In dem Fall hilft ein Blick ins error.log, was genau der Fehler war.
 
hmmm ich find grad den Ordner nicht in der die error.log liegen könnte ...
Hab leider nur einen Ordner mit logs in der nur die access.log liegt.

jemand eine Idee wo ich suchen könnte?

btw:
mit Graccem's Vorschlag bekomm ich auch nen Error (zu viele Weiterleitungen) ... :(

edit1:
habe es nun wie folgt gelöst:
ich habe die index.php weiterhin da gelassen.
habe danach davon eine Kopie erstellt, die ich dann unter i.php abgespeichert habe.
Den Rest macht nun mod_rewrite ;-)
Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteRule $ https://%{HTTP_HOST}/index.htm [R=301,L]
RewriteCond %{REQUEST_URI} ^/index.htm$
RewriteRule $ https://%{HTTP_HOST}/i.php [L,NC]
 
Zuletzt bearbeitet:
hmmm ich find grad den Ordner nicht in der die error.log liegen könnte ...
Hab leider nur einen Ordner mit logs in der nur die access.log liegt.
Normalerweise legt man diese nach /var/log/apache2.

Wenn du der Sysadmin bist, dann Gut Nacht; du kannst in der Apache-Konfiguration selber nachsehen, wo du die Logs hingelegt hast.

Hast du nur Webspace, einfach mal den Provider anschreiben, wo das error.log is bzw. ob sie es dir zugänglich machen können.
 
btw:
mit Graccem's Vorschlag bekomm ich auch nen Error (zu viele Weiterleitungen) ... :(

edit1:
habe es nun wie folgt gelöst:
ich habe die index.php weiterhin da gelassen.
habe danach davon eine Kopie erstellt, die ich dann unter i.php abgespeichert habe.
Den Rest macht nun mod_rewrite ;-)
Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} ^/index.php$
RewriteRule $ https://%{HTTP_HOST}/index.htm [R=301,L]
RewriteCond %{REQUEST_URI} ^/index.htm$
RewriteRule $ https://%{HTTP_HOST}/i.php [L,NC]

Ähm, jetzt hast du aber das Problem, dass / und /index.htm das gleiche ist. So hättest du das auch bei /index.php belassen können :p Und mein Code funktioniert auf meinem Webspace einwandfrei. Wenn eine Endlosschleife kommt, vermute ich, dass die RewriteCond nicht greift.

Wenn der von mir gepostete .htaccess-Code nicht funktionieren will, dann musst du wohl aufs canonical-Tag zurückgreifen.

Nein hab ich noch nicht ausprobiert. Aber wenn ich das auf meine Index.php anwende wirkt sich das nicht auch auf die Domain direkt aus?
Nur, wenn man es falsch anwendet. Ich habe es schon gesehen, dass sich Leute damit die ganze Domain abgeschossen haben. Und die 'SEOs' haben es nicht mal gerafft ;)
Der Canonical darf nur dann auftauchen, wenn man sich auf der /index.php befindet, sprich wenn $_SERVER['REQUEST_URI'] == '/index.php' ist.
 
...
Wenn du der Sysadmin bist, dann Gut Nacht;
...

Nunja, jeder hat mal klein Angefangen.
Aber sicherlich geb ich dir Recht, dass gewisse Basics sitzen sollten, bzw man in der Lage ist, Google zu Nutzen. (geht i.d.R. auch schneller ;))

Zurück zum Problem: Was genau sagt denn jetzt die error.log ?