• Das kreative Thema des Monats Oktober wird vor allem diejenigen unter Euch besonders ansprechen, denen Do-it-yourself quasi im Blut liegt. Zeigt uns Eure Improvisationskünste oder fotografiert, was andere Leute sich so im Alltag zusammengestrickt haben. --> Zum Mitmachen bitte hier klicken

[Apache] mod_rewrite Probleme. Umsetzen von URLs.

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.971
Moin moin ich habe ein Problem mit einer Webseite. Ich möchte dort mit mod_rewrite (via .htaccess) die Variablennamen verstecken bzw. die URL einfacher machen. Dazu habe ich mir diese .htaccess in das entsprechende Verzeichnis gelegt (derzeit noch ein Unterverzeichnis meines privaten Webspaces):

Code:
RewriteEngine on
RewriteRule ^([a-z])$ /index.php?orga=$1

Da ich von RegEx wenig Ahnung habe, hab ich mir das Ganze mit dem Beispeil aus der Wikipedia zusammen gebastelt.

Wenn ich jedoch nun http://www.meinedomain.de/unterverzeichnis/Blablub aufrufe wird nicht auf http://www.meinedomain.de/unterverzeichnis/index.php?orga=Blablub weitergeleitet bzw. umgebogen, stattdessen kommt ein 404. Der Direkte Aufruf von http://www.meinedomain.de/unterverzeichnis/index.php?orga=Blablub funktioniert wunderbar.

Die .htaccess liegt in http://www.meinedomain.de/unterverzeichnis/ .
Laut phpinfo(); ist mod_rewrite geladen.

Kann mir da jemand weiterhelfen?

Gruß Holger
 

Anhänge

  • Screenshot  3.png
    Screenshot 3.png
    41,2 KB · Aufrufe: 122
Zuletzt bearbeitet:
Bau mal die RewriteRule n bissl um:

Code:
RewriteRule ^([a-z]*)$ /index.php?orga=$1

Dein Beispiel müsste funktionieren wenn du genau einen kleinen Buchstaben an die URL heftest.
 
  • Like
Reaktionen: .holger
Naja, deinrewrite-mod leitet auf ne php weiter. in deinem text untendrunter erwähnst du aber ne html...
da macht der apache schon nen unterschied...
 
  • Like
Reaktionen: .holger
mh hilft es wenn du noch
Code:
RewriteBase /deinunterverzeichnis
an zwote Stelle schreibst?
 
  • Like
Reaktionen: .holger
Wenn die Datei in 'unterverzeichnis' kommt. Wenn sie in / liegt musst du noch zeno's Zeile einfügen. :)

Code:
RewriteEngine on
RewriteRule ^([a-zA-Z0-9_-]+)$ index.php?orga=$1
das erlaubt Kleinbuchstaben von a bis z, Großbuchstaben von A bis Z, Unterstrich und Bindestrich.


Vielleicht musst du es anpassen:
Code:
RewriteEngine on
RewriteRule ^([a-z]+)$ index.php?orga=$1
sofern du nur kleine Buchstaben zulassen willst. :)
 
  • Like
Reaktionen: .holger
Ist ein Rewrite bei Deinem vHost überhaupt erlaubt? Nur das Modul zu aktivieren ist nicht genug. (Stichwort AllowOverride)
Gruß Pepi
 
  • Like
Reaktionen: .holger
AllowOverride kann ich in der Ausgabe von phpinfo(); nicht finden. Hmm verdammt, na dann eben auf die eklige Art mit ?, = und so
 
Versuch doch mal das hier:

Options -Multiviews
RewriteEngine On
RewriteRule ^(.php)/ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9]+)/ index.php?orga=$1 [QSA]
 
  • Like
Reaktionen: .holger
AllowOverride ist eine Apache Direktive. Die muß bei der Konfiguration des Hosts eingetragen sein, sonst kann es sein daß Deine .htaccess schlicht und ergreifend ignoriert wird.

Hast Du schonmal eine simple Rewrite Rule ausprobiert um festzustellen ob das überhaupt funktiniert?
Gruß Pepi
 
Versuch doch mal das hier:

Options -Multiviews
RewriteEngine On
RewriteRule ^(.php)/ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([a-zA-Z0-9]+)/ index.php?orga=$1 [QSA]

ja, verdammt das klappt :-) cool. Danke! Hat gestern nicht geklappt, weil ich einen Biindestrich mit übergeben habe und das ja in der RewriteRule nicht abgedeckt war. Jetzt geht alles :-) supi :-)
 
Hallo

Ich hatte auch so ein Problem, wo immer ein Fehler kam, obwohl es eigentlich richtig war.
Die Lösung des Problems war, $1 in $0 umzuwandeln.
Vielleicht ist das hier ein einfacherer Weg.

wapplegraph
 
Ich meld mich nochmal...weil ich jetzt nen ähnliches Problem habe.
Von heute auf morgen taten es die RewriteRules von meinem einen vHost nicht mehr. Beim anderen geht alles super, aber beim einen scheinen die RegExps falsch zu sein. Ich frag mich wieso, da sie die Tage noch liefen, nur jetzt nicht mehr. (Eigentlich seit dem letzten Apache-Update).

Jetzt versucht der Apache, die URL direkt aufzurufen, ohne sie zu rewriten. Dass das nicht klappt, ist klar.
Mag mal jemand nen Blick drauf werfen?

Code:
RewriteEngine On
RewriteBase /
RewriteRule tags/(.*)/$ showlinks.php?tag=$1 [NC]
RewriteRule (.*)\.html$ $1.php
RewriteRule register/$ user.php?register=true
RewriteRule login/$ user.php
RewriteRule addlink/(.*)$ addlink.php?id=$1

Die Direktiven im vHost sehen folgendermaßen aus:

Code:
<Directory /home/tatonka/public_html/harvo>
Order Deny,Allow
Allow from all
AllowOverride All
# Don't show indexes for directories
# Options -Indexes
Options +FollowSymLinks +SymLinksIfOwnerMatch
Options -MultiViews
</Directory>