[Apache] mod_rewrite Probleme. Umsetzen von URLs.

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
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:

zeno

Lane's Prinz Albert
Registriert
05.11.05
Beiträge
4.894
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

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
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

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
@zeno leider kommt trotzdem ein 404 Error....
 

zeno

Lane's Prinz Albert
Registriert
05.11.05
Beiträge
4.894
mh hilft es wenn du noch
Code:
RewriteBase /deinunterverzeichnis
an zwote Stelle schreibst?
 
  • Like
Reaktionen: .holger

MrNase

Champagner Reinette
Registriert
11.01.05
Beiträge
2.656
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

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
Ist ein Rewrite bei Deinem vHost überhaupt erlaubt? Nur das Modul zu aktivieren ist nicht genug. (Stichwort AllowOverride)
Gruß Pepi
 
  • Like
Reaktionen: .holger

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
AllowOverride kann ich in der Ausgabe von phpinfo(); nicht finden. Hmm verdammt, na dann eben auf die eklige Art mit ?, = und so
 

Slashwalker

Winterbanana
Registriert
15.05.06
Beiträge
2.213
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

pepi

Cellini
Registriert
03.09.05
Beiträge
8.740
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
 

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
Ging meins nicht? :)

leider nicht. Ich hab mich jetzt an den Support meines Hosters gerichtet. Mal sehen was der dazu sagt. Ich glaub ich hol mir bald nen vServer für mich, wo ich auch n bisschen mehr Freiheiten und so habe....
 

.holger

Borowitzky
Registriert
13.09.04
Beiträge
8.970
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 :)
 

wapplegraph

Normande
Registriert
12.04.06
Beiträge
571
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
 

TaTonka

Neuer Berner Rosenapfel
Registriert
19.03.06
Beiträge
1.975
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>