# simples mod_rewrite-Tutorial funktioniert nicht



## sipoh (19. April 2008)

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:


```
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.-


----------



## Gumbo (19. April 2008)

Wenn „/rew/test-1.html“ zu „/rew/test.php“ umgeschrieben werden soll, muss die Regel genau umgekehrt lauten:
	
	
	



```
RewriteRule ^test-1\.html$ test.php [L]
```


----------



## sipoh (19. April 2008)

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.


----------



## Gumbo (19. April 2008)

```
RewriteRule ^rew/test-1\.html$ test.php [L]
```


----------



## sipoh (19. April 2008)

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?


----------



## Gumbo (19. April 2008)

Mit der AccessFileName-Direktive kannst du den Namen bestimmen. Damit entspricht es aber nicht mehr der Konvention einer versteckten Datei (mit einem Punkt beginennd) und ist auch von außen zugänglich.


----------



## sipoh (19. April 2008)

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.


----------



## sipoh (19. April 2008)

Ok, ich habe mal was probiert, was auch hinhaut:

.htaccess:

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

index.html

```
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

```
<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 ..


----------



## Gumbo (19. April 2008)

Das ist nur möglich, indem du „seite.php?id=1“ auf „seite_1.html“ (extern) weiterleitest.


----------



## sipoh (19. April 2008)

Ok. Vielen Dank erstmal.

Folgende Frage bleibt noch offen.

Ich konstruiere mal was:

index.php (Nachrichten werden hier angeteasert)

```
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

```
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?


----------

