php und htaccess

angelkathy

Grünschnabel
Hallo zusammen,

ich habe eine Seite programmiert, dessen Seiten nach dem Schema:
http://localhost/test/content/seite1.php
http://localhost/test/content/seite2.php
usw. aufgerufen werden.

Da ich wollte, dass die Seite immer so ausgegeben wird:
http://localhost/test/seite1.html
http://localhost/test/seite2.html

habe ich zum einen die Links in den PHP-Dateien immer "hart" so verlinkt "seite1.html" bzw. "seite2.html", damit diese Links als html im Quellcode stehen.

Dann habe ich eine htaccess-Datei erstellt, die die html-Dateien als php interpretiert. Diese sieht so aus:
HTML:
Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)\.html$ /test/content/$1.php [L]

Was mich stört ist
  1. ...dass ich in meinen PHP-Dateien die HTML-Datei manuell angebe.
  2. ...dass wenn meine Seite auf einem Server installiert ist, der kein htaccess versteht (hatte ich leider), dass die Seite dann nicht wenigstens die original Links ausgibt (also content/seite1.php), da ich die Links ja fest als "seite1.html" reingeschrieben habe.

Wie kann ich die ganze Sache besser Lösen, um meine genannten Probleme zu beheben?

Freue mich schon über Hinweise und Tipps.
 
Vielen Dank für deinen Link, aber es ist nicht das was ich wissen wollte ;-).

Mir geht es eher darum, wie ich das in meinen PHP-Dokumenten organisiere, dass jenachdem, ob mod_rewrite an ist oder nicht, der richtige Link generiert wird. Ich mache es im Moment für meinen Geschmack zu statisch, indem ich die Links fest im Quellcode als html-Links angebe. Ich würde am liebsten die original-PHP Pfade angeben und htaccess macht daraus (auch im Quellcode) die html-Links. Aber das wird so nicht funktionieren. Und genau hier fehlt mir die Idee, wie man soetwas aufbaut.

Wenn ich mein Problem auf dein Beispiel beziehe, gebe ich also überall die Links in der Form "link2.html" an, statt "rewrite.php?link=1". Meine Frage ist nun, wie mach ich das besser? Also Idee wäre überall "rewrite.php?link=1" anzugeben und die htaccess macht daraus die html Links. Ich will aber, dass diese Links dann auch so im Quellcode stehen und das macht ja die htaccess nicht?

Ich hoffe, ich konnte mein Problem jetzt besser erklären.
 
Vielen Dank für deinen Link, aber es ist nicht das was ich wissen wollte ;-).

Mir geht es eher darum, wie ich das in meinen PHP-Dokumenten organisiere, dass jenachdem, ob mod_rewrite an ist oder nicht, der richtige Link generiert wird. Ich mache es im Moment für meinen Geschmack zu statisch, indem ich die Links fest im Quellcode als html-Links angebe. Ich würde am liebsten die original-PHP Pfade angeben und htaccess macht daraus (auch im Quellcode) die html-Links. Aber das wird so nicht funktionieren. Und genau hier fehlt mir die Idee, wie man soetwas aufbaut.

Wenn ich mein Problem auf dein Beispiel beziehe, gebe ich also überall die Links in der Form "link2.html" an, statt "rewrite.php?link=1". Meine Frage ist nun, wie mach ich das besser? Also Idee wäre überall "rewrite.php?link=1" anzugeben und die htaccess macht daraus die html Links. Ich will aber, dass diese Links dann auch so im Quellcode stehen und das macht ja die htaccess nicht?

Ich hoffe, ich konnte mein Problem jetzt besser erklären.

Wo ist jetzt das Problem? In deinen Skript gibst du die Orignalpfade an. die .htaccess verweist auf dieses Skript, mit einer zuzüglichen get variable. Ist sie nicht gesetzt, ist durch eine einfache if Abfrage das Problem gelöst. :)
 
Ich hab aber keine zusätzliche Get Variable. Würde ich auch ungern überall dazuschreiben, wenn sie eigentlich nicht gebraucht wird? Auf anderen Seiten mit htaccess wird ja auch nicht überall nur wegen mod_rewrite eine zusätzliche Get-Variable verwendet, oder?

Vielleicht kannst du es auch an meinem konkreten Beispiel im ersten Post erklären. Denn wenn ich in meinen PHP-Datei den Original-Pfad reinschreiben, dann wird er auch so ausgegeben, da erreiche ich mit htaccess nichts?

Vielleicht steh ich auch total auf dem Schlauch, deshalb wäre ich froh über ein Beispiel bezogen auf meine oben beschriebene Situation :-). Danke schon mal!
 
Zuletzt bearbeitet:
Verstehe ich nicht.... :)
wo ist jetzt das Problem, wenn du in deiner .htaccess sowas zB. schreibst.

RewriteRule (.*) /index.php?action=blah&htaccess=true [L]

und dann in PHP

if(isset($_GET["htaccess"])){
//dein Skript mit rewrite
}else{
//dein Skript ohne rewrite
}
 
Zuletzt bearbeitet von einem Moderator:
Sorry, aber ich verstehe nicht, wie du das meinst. Können wir das vielleicht an folgendem konkreten Beispiel durchspielen :-)?

Alos ich habe ein Menü, dass in meiner php-Datei so ausgebe:
PHP:
<ul class="sf-menu">
	<li class="current"><a href="content/hinzufuegen.php">Hinzufügen</a>
	<li><a href="content/editieren.php">Editieren</a></li>
    <li><a href="content/exportieren.php">Exportieren</a></li>			
</ul>

Wenn ich in der htaccess nun soetwas schreibe:
HTML:
RewriteRule ^(.*).html$ /test/content/$1.php [L]
dann steht in meinen Menüpunkten natürlich immer noch der Pfad zu den PHP-Dateien.

Der Aufruf "content/editieren.php" zeigt mir dann zwar meine Seite, aber ohne meine CSS-Definitionen, weil die Pfade natürlich nicht mehr stimmen, da sich diese ja an den Aufruf der *.html-Dateien orientieren.
Ein manueller Aufruf wie "editieren.html" funktioniert (auch die Pfad zu den CSS-Dateien stimmen). Aber das ist ja auch das, was ich jetzt schon habe.

So, vielleicht kannst du mir anhand dieses Beispiel zeigen, wie ich das besser lösen kann :-).
 
Zurück