.htaccess mod_rewrite URL Manipulation

baubart

Grünschnabel
Guten Tag alle zusammen.

Habe paar Probleme meine URL umzuschreiben.

Google hat mir nicht viel gebracht und hier im Forum ist auch nicht das Richtige dabei.

Aus

index.php?path=categori&file=product

soll

/categori/product.html

werden. Wegen Suchmaschinenoptimierung.

So wie es da ist, ist das eigentlich kein Problem. Was ich brauche ist:

"product.html" wird nicht immer übergeben, also nur /categori/
aus /categori (ohne Slash) soll /categori/ (mit Slash) werden (Um Doppeleinträge zu vermeiden)
"categori" wird nicht immer übergeben, also nur / (Hauptverzeichnis)
es wird auch nur "product.html" übergeben also /product.html
und
der Ordner /admin/ soll NICHT überschrieben werden.

Bitte hilft mir beim Schreiben der .htaccess Datei.

bis jetzt habe ich:
Code:
Options -Indexes

DirectoryIndex index.php

RewriteEngine On
RewriteBase /

RewriteRule ^([0-9A-Za-z]+)?(\/)?([0-9A-Za-z]+)?\.htm?$ index.php?path=$1&file=$3
 
Zuletzt bearbeitet:
Ist das gewollt, das du Probiert hast die Eingabe mit dem 0-9A-Za-z einzuschränken?
Wenn nicht könntest du es so lösen.


Code:
RewriteEngine On
RewriteCond %{REQUEST_URI} !^/(admin)
RewriteRule ^([^/]*)/([^/]*)\.html$ /index.php?path=$1&file=$2 [L]

Mit Hilfe der RewriteCond kannst du auch Ausnahmen definieren.
Wenn noch mehr Ordner auf die Aufnahme Liste setzen möchtest kann du die Ordner in der Runden Klammer und getrennt mit ein | nacheinander eintragen z.B. (admin|folder|folder2).

Ich habe die Rule nicht getestet, kann also noch zu Problemen geben.
 
Ist das gewollt, das du Probiert hast die Eingabe mit dem 0-9A-Za-z einzuschränken?

Ja ist es gewollt.

Habe es jetzt so gelöst:

Code:
Options -Indexes

DirectoryIndex index.php

RewriteEngine On

RewriteCond %{HTTP_HOST} !^(www)\.domain\.de$      # Überschreibt die Domain
RewriteRule ^(.*)$ http://www.domain.de/$1 [L,R=301]  # damit keine Doppeleinträge bei Suchmaschinen gibt

Rewriterule ^admin/.* - [L]                             # Diese Ordner
Rewriterule ^templates/(css|img)/.* - [L]                 # werden NICHT überschrieben

RewriteRule ^([0-9A-Za-z]+).htm?$ index.php?file=$1
RewriteRule ^([0-9A-Za-z]+)/([0-9A-Za-z]+).htm?$ index.php?path=$1&file=$2

Habe gemerkt, dass ich nur zwei verschiedene Request URL habe.
Einmal nur eine *.htm Seite oder /dir/*.htm

Also jetzt funktioniert es :)

Danke an alle

MfG
 

Neue Beiträge

Zurück