| 

.NET C# Java Javascript Exception

2
Hallo,

ich möchte mit dem Rewrite Modul des Apachen einen Aufruf wie z.B.

http://domain.tld/dir1/dir2


umleiten auf

http://domain.tld/index.php/dir1/dir2


Der Pfad soll also immer hinter die index.php gehängt werden, damit er von dieser weiterverarbeitet werden kann.

Zudem möchte ich ggf. die Sublevel-Domain http://www.domain.tld/ auf domain.tld umleiten, damit kein Duplicate Content auftritt.

Als Newbie in Sachen Rewrite/RegEx komme ich einfach nicht mehr weiter...

Vielen Dank für Eure Hilfe!
14.03.2011
doublem 683 1 1 9
2 Antworten
1
Grundsätzlich musst Du wissen, dass die Regulären Ausdrücke ist (im Normalfall) auf 'nur' den Request-Teil der URL beziehen. Es gibt noch mehr Variablen, die man prüfen kann, aber das findest Du alles in der (zugegebenermassen recht kryptischen) Doku.
So dann auch %{REQUEST_FILENAME} welches den angeforderten Dateinamen (oder auch nur Verzeichnis) beinhaltet.
-f bzw. -d bedeuten File bzw. Directory exists, das ! davor negiert, also not.

%{HTTP_HOST} ist der angefragte Host und schlussendlich ist noch das [L] wichtig, welches die Ausführung der RewriteEngine stoppt.

Hier Beispiele (ungetestet) wie Du
a) nicht-existente Aufrufe abfangen und zur index.php weiterleiten kannst
b) www. aus der Domain wegbekommst

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f # datei existiert nicht
RewriteCond %{REQUEST_FILENAME} !-d # verzeichnis existiert nicht
RewriteRule ^(.*)$ http://domain.tld/index.php/$1 [L]

RewriteCond %{HTTP_HOST} ^www\.domain\.tld$ [NC] # host ist http://www.domain.tld/
RewriteRule ^(.*)$ http://domain.tld/$1 [R=301,L]
14.03.2011
DaSpors 4,2k 2 8
0
Danke Dir, sehr aufschlussreich :-)

Kann ich

^www\.domain\.tld$

durch

^www\.*$

ersetzen, wenn ich die Umleitung domain-unabhängig halten will?
14.03.2011
doublem 683 1 1 9
Du kannst, aber es fragt sich ob das sinnvoll ist, weil die htaccess Datei doch im doc-root der Domain liegt ;)
Andersrum wird ein Schuh draus: www durch nen Platzhalter ersetzen um alle Subdomains umzuleiten.
DaSpors 14.03.2011
Aus Performancegründen möchte ich die Rule in einer lokalen http.conf include ablegen - und auch weil sie auf mehreren virtuellen Hosts angewendet werden soll (deswegen auch die Domain-Unabhängigkeit...)

Mit der Subdomain ist natürlich ein Argument, ich verwende also:

RewriteCond %{HTTP_HOST} ^*\.*\.de$ [NC]
doublem 14.03.2011

Stelle deine Regex-Frage jetzt!