# mod_rewrite Verzeichnisausnahme?



## CrushLog (19. Juli 2006)

Hallo,

ich hoffe ich bin hier richtig mit meinem Problem:
ich benutz bei mir mod_rewrite, obwohl ich zugeben muss, dass ich es noch nicht wirklich alles verstanden hab.
Ich würde nun gerne eine Ausnahme einbauen, die einen bestimmten String aussen vor lässt und stattdessen zu einer anderen Datei weitergeleitet wird.

Weiterhin hab ich noch immer das Problem, dass meine Rules nicht dynamisch genug sind, sprich, kann mir jemand erklären, wie es am besten gehen würde die übergebenen Variablen per PHP so dynamisch wie möglich zu halten?

Hier mal der Auszug aus meiner htaccess


```
RewriteEngine	on
#Options +FollowSymlinks
RewriteBase /
RewriteCond	%{REQUEST_FILENAME}	!-d
RewriteCond	%{REQUEST_FILENAME}	!-f
RewriteRule	^([^;-]*)$		/index.php?open=$1
RewriteRule	^(.+);(.*)$		/index.php?open=$1&id=$2
RewriteRule	^(.+)-(.*)$		/index.php?open=$1&option=$2
```

Am liebsten würde ich alles per / weitergeben, sprich.
http://domain.de/news/123 - News - ID 123
oder
http://domain.de/news/misc/123 - News - Kategorie misc - ID 123
oder
http://domain.de/shoutbox/send - Shoutbox - Option Send (also keine weitergabe per id= oder so)

Schwer zu erklären, die Dokumentation hab ich mir schon durch gelesen, aber versteh diesen theoretischen Kram recht schwer. Beispiele und Hilfestellungen zum Verständnis wären was ich bräuchte.
Danke euch im Voraus!

//Ben


----------



## CrushLog (19. Juli 2006)

Sorry, aber *push*
Kann mir denn keiner helfen?
Wäre euch echt dankbar...oder ein lieber Mod verschiebt den Thread in ein anderes Forum, falls ich da besser aufgehoben sein sollte.


----------



## Gumbo (20. Juli 2006)

Wie sieht’s mit Folgendem aus:
	
	
	



```
RewriteRule   ^([^/]+)/([1-9][0-9]*)$           /index.php?open=$1&id=$2   [L]
RewriteRule   ^([^/]+)/([^/]+)$                 /index.php?open=$1&option=$2   [L]
RewriteRule   ^([^/]+)/([^/]+)/([1-9][0-9]*)$   /index.php?open=$1&category=$2&id=$3   [L]
```


----------



## CrushLog (21. Juli 2006)

Danke, ich werds gleich mal einbinden und ausprobieren,
wie schauts denn aus, wenn ich praktisch ein Verzeichnis in der URL ausnehmen will, e.g.:


```
http://www.domain.de/users;1
->
/users/index.php?id=1
```

Wie mache ich das genau, und vor allem, an welche Stelle setze ich das?


----------



## Gumbo (21. Juli 2006)

Die Reihenfolge der Regeln ist eigentlich egal. Grundsätzlich sollten sie jedoch der Komplexität nach sortiert werden, sodass die komplexen zuerst und die allgemeinen zum Schluss kommen. Denn dann ist das Risiko, dass ein komplexer URI bereits in ein allgemeines Muster passt, gering.


----------



## CrushLog (24. Juli 2006)

Ok danke, dann werd ich mich nochmal an dem ganzen probieren.
Aber wie ich nun ein Verzeichnis aus dem Ganzen ausnehme weiss ich immer noch nicht :/

kann ich da einfach:


```
RewriteRule   ^users/([^/]+)$                 /users/index.php?open=$1&option=$2   [L]
```

das einfügen?

War am Wochenende im Kurzurlaub, deshalb erst jetzt die Antwort und ein Dankeschön 

//Edit
Noch etwas, sobald ich das nach deienr Syntax mache, gibt er mir einen Fehler bei den eingebundenen .js Dateien, woran kann das liegen, bzw wie umgeh ich das?


```
Fehler: syntax error
Quelldatei: http://localhost/***/js/news.js
Zeile: 1
Quelltext:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
```

Ausserdem bindet er die .css Datei nicht mehr ein, sobald ich eine option auswähle, sprich
http://domain.de/news/option
oder sobald ich eine id drin hab
http://domain.de/news/1


----------



## CrushLog (27. Juli 2006)

Sorry, aber ich muss das Thema noch einmal nach oben pushen und hoffe, dass mir da jemand helfen kann


----------

