isaedv
Goto Top

Mod rewrite dynamischer Seitenaufruf basierend auf der Eingabe

Hallo Zusammen:

ich versuche mich gerade in das ganze Thema mod_rewrite einzuarbeiten, komme jetzt aber leider nicht weiter.

Sysinfo:
Apache: 2.2.9(Debian)
Debian Lenny, Linux 2.6.19x2 i686

mods-enabled: rewrite, proxy,proxy_http,alias

Jetzt die Frage:
Über eine URL ist derzeit eine JavaScript-Datei erreichbar.
http://meinedomain.com/pfad/zur/datei/datei10.2.js

Jetzt würde ich gerne diese Domain kürzen und dynamisch aufrufen können.

neue URL:
http://meinedomain.com/v/10.2/

"/v/" soll für Version stehen und "10.2" für die jeweilige Datei.
Wenn ich jetzt:
http://meinedomain.com/v/10.3/ aufrufe, soll
http://meinedomain.com/pfad/zur/datei/datei10.3.js geöffnet werden.


Ist dies möglich? Wenn ja, wie?

Vielen Dank für Eure Hilfe.
Kommentar vom Moderator 16568 am 23.08.2012 um 20:07:59 Uhr
Leute, sowas wie hier ist ja ausgesprochen selten im Forum.

Jemand frägt nach etwas, und bekommt Hilfe zur Selbsthilfe, die er dann auch versteht und sich bedankt.

Sachen gibts noch... face-smile

Content-ID: 190093

Url: https://administrator.de/contentid/190093

Ausgedruckt am: 26.11.2024 um 01:11 Uhr

Arano
Arano 23.08.2012 um 15:54:24 Uhr
Goto Top
Hallo ISAEDV

Ja das ist möglich !
Wie ?
Nunja, da du dich ja schon versuchst darin einzuarbeiten, führen wir das doch mal weiter ja !? *fg*

Schau dir doch mal dieses Beispiel an: modrewirte.de - aus seite.php?id=12 wird seite_12.html das ist deinem schon sehr ähnlich.
Solltest du Schwierigkeiten habe den RegEx (regulären Ausdruck / regular experession) zu formulieren, kannst du hier etwas darüber nachlesen: regular-expression.info - RegEx-Tutorial oder aber mit deinem Versuche hier noch mal nachfragen - den __helfen__ tun wir gerne :D


Viel Erfolg
Arano

PS. Lösung posten und Beitrag markieren nicht vergessen ;)
ISAEDV
ISAEDV 23.08.2012 um 16:11:52 Uhr
Goto Top
Hallo Arano,

danke für die schnelle Antwort.
Ich glaube das Problem sind nicht der RegEx sondern der Pfad.

Mein Apache-Config auszug:

<Location /v>
Order allow,deny
Allow from all
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/v/([0-9]\.([0-9]))$ /pfad/zur/datei/datei$1$2\.js [L]
</Location>

Daraufhin bekomme ich ein:
Not found
The requested URL /v/10.2 was not found on this server.

Und im Log steht:
File does not exist: /lokaler/pfad/zur/documentroot/v/10.2 face-sad

Vielen Dank
Arano
Arano 23.08.2012 um 16:57:25 Uhr
Goto Top
Nöö, ist doch der RegEx :P

[0-9]
Das ist ein __einzelnes__ Zeichen !
Entweder eine 0 oder 1 oder 2 o 3 o 4 o 5 o 6 o 7 o 8 o 9

Somit passt der RegEx nicht auf "10" (Das sind zwei Zeichen) und greift nicht, anschließend versicht der Webserver selber die Datei zu finden und greift auch ins leere weil es ja nur eine virtueller Name ist und gibt die entsprechenden Fehlermeldung zurück: 404 - Not found.

Du könntest nun ganz genau die Anzahl der Zeichen die vorkommen dürfen begrenzen: regular-expressions.info - Limiting Repetition
oder allgemein bestimmen das dieses Zeichen mehrfach vorkommen muss (1x oder mehr): regular-expressions.info - Quantifiers (* + . ?)


~Arano
ISAEDV
ISAEDV 23.08.2012 um 18:04:41 Uhr
Goto Top
Oh man, danke. Hast mir den Feierabend gerettet ;)

Schuld war eine Mischung aus beiden: Zum einen die Ziffernbegrenzung und zum anderen der Pfad bis dahin. Ich hatte in meiner Erster Variable immer den lokalen Pfad zur /v/10 drinnen...

Ergo:
RewriteRule ^/v/([0-9]\.([0-9]))$ /pfad/zur/datei/datei$1$2\.js [L]
wird zu:
RewriteRule ^/lokaler/pfad/v/([0-9]*)\.([0-9]*)$ /pfad/zur/datei/datei$1\.$2\.js [L]

Tausend Dank.. jetzt habe ich nicht nur mod_rewrite mehr Verstanden sondern auch mein Problem gelöst. Danke auch dafür, dass du es erklärt hast und nicht nur die Lösung geschrieben hast! Hilft wesentlich mehr.

In diesem Sinne einen schönen Feierabend!
Arano
Arano 23.08.2012 um 18:40:49 Uhr
Goto Top
Ahja, stimmt !
Der zweite Fehler viel mir auch auf... habe es dann nur vergessen ihn noch zu erwähnen -.-

Aber hey, du hast ihn selber gefunden, um so besser !


~Arano face-smile