# Problem mit mod_rewrite



## Miraculixx (10. April 2006)

Ich weiß, es gibt unendlich viele Unterlagen und Beiträgen zu diesem Thema, doch ich beschäftige mich nun schon seit mehreren Stunden mit meinem Problem und habe noch immer nicht die passende Lösung gefunden! 

Also ich möchte zum Beispiel folgenden Link:

www.asdf.at/atom/medien/videos/12

in

www.asdf.at/atom/html/index.php?page=medien&cat=videos&ucat=12

umwandeln.

Dazu habe ich folgendes mod_rewrite-Skript geschrieben:

```
RewriteEngine on
DirectoryIndex /atom/html/index.php
RewriteRule ^/?(.*)/?(.*)/?(.*)$ atom/html/index.php?page=$1&cat=$2&ucat=$3
```
Das ganze führt jedoch nur zu folgender Fehlermeldung:

```
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.  Please contact the server administrator,  agrimm@speicherhosting.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.
  More information about this error may be available in the server error log.
```
 
Ich weiß wirklich nicht, warum es nicht funktioniert, aber ich hoffe hier kann mir jemand weiter helfen.


----------



## Gumbo (10. April 2006)

Probier mal Folgendes:
	
	
	



```
RewriteEngine	on
RewriteCond	%{REQUEST_FILENAME}		!-d
RewriteCond	%{REQUEST_FILENAME}		!-f
RewriteRule	^([^/]+)/([^/]+)/([^/]+)$	/atom/html/index.php?page=$1&cat=$2&ucat=$3	[L]
```


----------



## Miraculixx (10. April 2006)

Gesagt, getan.
Wenn ich jetzt aber folgende URL aufrufe:
www.asdf.at/atom/medien/videos/12

dann kommt folgende Fehlermeldung:

 The requested URL /atom/medien/videos/12 was not found on this server.

Kurze Zwischenfrage: in welchem Ordner muss ich die .htaccess-Datei überhaupt abspeichern? 
Ich hab die jetzt im /atom/ - Verzeichnis gespeichert, passt das?
Ich weiß nämlich nicht, von welchem Verzeichnis diese Datei ausgeht - ob vom root-Verzeichnis, oder vom Verzeichnis in dem die .htaccess-Datei selbst liegt?

Bzw. gibt es eine Funktion, mit der man anzeigen lassen kann, welche Datei das Skript aufruft?

edit: Im Unterordner /atom/html/ existiert die index.php natürlich! In dieser versuche ich vorerst - testweise - nur, einen Text auszugeben.


----------



## Gumbo (10. April 2006)

Ein „.htaccess“-Konfigurationsdatei kann prinzipiell in jedem Verzeichnis gespeichert werden. Es wird jedoch empfohlen, nur eine anzulegen und den Webserver so zu konfigurieren, dass nur diese verarbeitet wird und in den Unterverzeichnissen erst gar nicht nach einer gesucht wird.

Setze mal zur Analyse zusätzlich das „R“-Flag, sodass die Anfragen auch wirklich umgeleitet werden.


----------



## Miraculixx (10. April 2006)

JUHUU es funktioniert! 
Herzlichen Dank für deine Hilfe

Ich weiß zwar jetzt auch nicht so genau, wo das Problem wirklich lag, aber es funktioniert.

Ein Problem habe ich aber noch:
Es sollte auch möglich sein, dass man nur zwei oder einen oder auch gar keinen Parameter übergibt.
Kann man das in einer Regel zusammenfassen? Oder soll ich da einfach für jeden Fall eine eigene Regel machen?

Bzw. wäre es nicht sinnvoll, mit DirectoryIndex eine Standard-Index-Datei zu setzen?

Ich weiß, ich bin lästig - aber noch eine Frage:
Wenn ein Link, der vom Benutzer aufgerufen wird, nicht existiert - wie kann ich da einfach auf die index.php verlinken ohne jegliche Parameter - oder wird das durch den DirectoryIndex-Wert angegeben?

EDIT - Update
Ich habe in der .htaccess-Datei jetzt folgenden Code:

```
RewriteEngine	on
RewriteCond	%{REQUEST_FILENAME}		!-d
RewriteCond	%{REQUEST_FILENAME}		!-f
RewriteRule	^([^/]+)/([^/]+)$	/muetter/html/index.php?page=$1&cat=$2
RewriteRule	^([^/]+)/([^/]+)/([^/]+)$	/muetter/html/index.php?page=$1&cat=$2&ucat=$3	[L]
```

Dieser funktioniert einwandfrei. Wenn ich jedoch noch die Zeile hinzufüge:

```
RewriteRule	^([^/]+)$	/muetter/html/index.php?page=$1
```
dann funktioniert gar nichts mehr.
Kannst du mir das erklären?

Herzlichen Dank


----------

