simples mod_rewrite-Tutorial funktioniert nicht

sipoh

Erfahrenes Mitglied
Hallo,

ich habe ein einfaches Tutorial im Netz gefunden und wollte das mal nachbauen.
-> das Tutorial

Das Ergebnis sollte sein:
aus http://localhost/rew/test-1.html wird http://localhost/rew/test.php

Dazu bin ich Step by Step folgend vorgegangen:

1. In der httpd.conf "LoadModule rewrite_module modules/mod_rewrite.so" aktiviert. (Es handelt sich bei mir um den Apache, V 2.2.8)
-> der htdocs - Pfad stimmt soweit
-> Im Tutorial ist die Rede von AccessFileName, dessen Einstellung geändert werden soll. Dieses habe ich in der httpd.conf nicht! gefunden (siehe Tutorial).

2. htaccess-Datei erstellt (heißt d.htaccess, weil ich mit Windows arbeite) und im Ordner "rew" abgespeichert -> mit folgendem Inhalt:

PHP:
RewriteEngine On
RewriteBase /rew
RewriteRule ^test\.php$ test-1\.html [L]


3. Natürlich habe ich auch die test-1.html erstellt.

Test: Rufe ich also http://localhost/rew/test.php auf, kriege ich ein 404-Error.

Außerdem habe ich den Verdacht, meine httpd.conf kaputt gemacht zu haben.-
 
Wenn „/rew/test-1.html“ zu „/rew/test.php“ umgeschrieben werden soll, muss die Regel genau umgekehrt lauten:
Code:
RewriteRule ^test-1\.html$ test.php [L]
 
So steht's auch in der htaccess-Datei. Nur liefert der Server eben nicht das gewünschte bzw. überhaupt ein Ergebnis - bis auf die Error-Meldung eben.
 
Wenn ich meine htaccess-Datei d.htaccess genannt habe, weil windows mit .htaccess nichts anfangen kann, muss das doch in der httpd.conf-Datei definiert werden. Sonst kann ich da ja reinschreiben, was ich will - es ändert nichts an der Tatsache, dass d.htaccess nicht berücksichtigt wird.

Wo mache ich das?
 
ok, ich habe eine auf einem Web-Server existierende .htaccess-Datei genommen, diese lokal in das Verzeichnis "rew" kopiert und den Inhalt eingesetzt. Es läuft trotzdem nicht.
 
Ok, ich habe mal was probiert, was auch hinhaut:

.htaccess:
PHP:
RewriteEngine on
RewriteRule ^seite_([0-9]+).html$ seite.php?id=$1

index.html
PHP:
index.html
<br/><br/>
PHP-Links<br/>
<a href="seite.php?id=1">seite.php?id=1</a><br/>
<a href="seite.php?id=2">seite.php?id=2</a><br/>
<a href="seite.php?id=3">seite.php?id=3</a>

<br/><br/><br/>
für MOD-REWRITE umgewandelt (existieren nicht wirklich):<br/>
<a href="seite_1.html">seite_1.html -> seite.php?id=1</a><br/>
<a href="seite_2.html">seite_2.html -> seite.php?id=2</a><br/>
<a href="seite_3.html">seite_3.html -> seite.php?id=3</a>

seite.php
PHP:
<a href="index.html">HOME</a>
<br/><br/>
<?php
if($_GET['id']>0) echo "datei: seite.php?id=".$_GET['id'];
?>


seite.php?id=1 analog seite_1.html -> beide zeigen selben Inhalt.

Wie kann ich es aber erreichen, wenn user seite.php?id=1 eingibt, in der Adressleiste seite_1.html angezeigt wird?

Ist das schon mod_rewrite? Online klappt es nämlich auch ..
 
Das ist nur möglich, indem du „seite.php?id=1“ auf „seite_1.html“ (extern) weiterleitest.
 
Ok. Vielen Dank erstmal.

Folgende Frage bleibt noch offen.

Ich konstruiere mal was:

index.php (Nachrichten werden hier angeteasert)
PHP:
db-Abragen ..
while(fetch_assoc) echo "<a href="news.php?id=".$newsid.">".$newstitel."</a>";

-> Ausgabe:
<a href="news.php?id=1">heute ist morgen</a>
<a href="news.php?id=2">heute ist nicht morgen</a>
<a href="news.php?id=3">morgen</a>
<a href="news.php?id=4">hmm ..</a>
..


news.php
PHP:
select * from news where newsid = '".$_GET['id']."'
->output details

Um jetzt news.php?id=3 suchmaschinenfreundlich zu gestalten, sollte die URL prinzipiell dann lieber so aussehen: news/morgen.php

Wie macht das tutorials.de?
Die URL dieses Themas lautet ja so: http://www.tutorials.de/forum/hosti...-mod_rewrite-tutorial-funktioniert-nicht.html

Sehen die Links schon so aus oder werden die "künstlich" in Form gebracht?
 

Neue Beiträge

Zurück