Zur Navigation

Über htaccess einem URL etwas hinzufügen.

1 Mathias (Gast)

Hallo,

ich habe lange verzweifelt gesucht im Internet, da ich ein sehr spezielles Problem habe. Vielleicht (und auch hoffentlich) kann mir hier geholfen werden.

Ist folgende Aufgabe zu lösen? Und wenn Wie?


Mein Joomla-System produziert für mein Glossar einen Link mit Pfad, für jede Sprache einen unterschiedlichen. Da ich im System jedoch zwei Glossare habe, soll in der URL das Sprachenverzeichnis überprüft werden. In meinem Fall (/de/) oder (/en/). Im Falle von (/de/) soll dem URL ein "&glossid=2" hinzugefügt werden, und bei (/en/) ein "glossid=3".

Beispiellinks:
1. http://www.domain.com/index.php/de/component/glossary/?task=list&glossid=2&letter=M
2. http://www.domain.com/index.php/de/component/glossary/?task=list&glossid=3&letter=All
3. http://www.domain.com/index.php/en/component/glossary/?task=list&glossid=2&letter=V

Jetzt hätte ich gerne das die links folgendermaßen umgeschrieben werden:
1. http://www.domain.com/index.php/de/component/glossary/?task=list&glossid=2&letter=M&glossid=2
2. http://www.domain.com/index.php/de/component/glossary/?task=list&glossid=3&letter=All&glossid=2
3. http://www.domain.com/index.php/en/component/glossary/?task=list&glossid=2&letter=V&glossid=3

Alternativ wäre natürlich auch möglich, das "glossid" im Link selber direkt zu manipulieren und umzuschreiben, nur mir sträuben sich schon bei dem Beispiel oben die Haare. Ich hielt es für am einfachsten, einfach ein glossid noch hinten ran zu hängen, da dann das erste einfach überschrieben wird.

Wichtig sei noch zu erwähnen, dass der link auch wirklich aufgerufen wird, also ausgeführt.

Ich hoffe mir kann hier jemand helfen. Im Vorraus schon mal herzlichen Dank. Das Forum ist auf jeden Fall gebookmarkt, durch die guten Hilfen hier.

03.02.2009 19:17

2 Jörg Kruse

Sind die Parameter immer in derselben Reihenfolge angeordnet? Dann könnte man es vielleicht so versuchen (ungetestet):

RewriteCond %{QUERY_STRING} task=list&glossid=[0-9]&letter=(.*)
RewriteRule index.php/de/component/glossary/ index.php/de/component/glossary/?task=list&glossid=2&letter=%1

RewriteCond %{QUERY_STRING} task=list&glossid=[0-9]&letter=(.*)
RewriteRule index.php/en/component/glossary/ index.php/en/component/glossary/?task=list&glossid=3&letter=%1

03.02.2009 20:14

3 Mathias (Gast)

Hallo Jörg,

WOW. Vielen Dank für die fixe Antwort. Ich hab es auch gleich ausprobiert!

Ergebnis: Leider produziert er bei mir dann einen 500 Internal Server Error.

03.02.2009 20:33

4 Jörg Kruse

Ich hab's grad mal getestet, bei mir gab's keine Probleme

Joomla ist vermutlich auch schon am rewriten, nehme ich an? Es könnte sein, dass sich da verschiedene Rules beißen. Wie schaut denn die komplette .htaccess aus?

03.02.2009 20:46

5 Mathias (Gast)

Bitte nicht lachen... :)

Neben meinen endlosen Versuchen, so:
DirectoryIndex index.php

CheckSpelling Off

#Umleitung fuer das Glossar

#Glossar Haas
#Redirect 301 /index.php/de/component/glossary/ http://www.domain.com/index.php/de/component/glossary/?letter=All&glossid=2
#Redirect 301 /index.php/en/component/glossary/ http://www.domain.com/index.php/en/component/glossary/?letter=All&glossid=3

# --
#Redirect 301 /index.php/de/component/glossary/?letter=All&glossid=3 http://www.domain.com/index.php/de/component/glossary/?letter=All&glossid=2
#Redirect 301 /index.php/en/component/glossary/?letter=All&glossid=2 http://www.domain.com/index.php/en/component/glossary/?letter=All&glossid=3

#Options +FollowSymLinks
#RewriteEngine On
#RewriteRule ^/index\.php/en/component/glossary/ /index.php/en/component/glossary/?letter=All&glossid=3 [R=301,L]
#RewriteRule ^/index\.php/de/component/glossary/ /index.php/de/component/glossary/?letter=All&glossid=2 [R=301,L]




#Andere Versuche
#Glossar Franke
#Redirect 301 /index.php/de/component/glossary/ http://www.domain.com/index.php/de/component/glossary?letter=All&glossid=2
#Redirect 301 /index.php/en/component/glossary/ http://www.domain.com/index.php/en/component/glossary?letter=All&glossid=3

#Franke Tweak --
#RedirectMatch 301 ^/index.php/de/component/glossary/$ $1&glossid=2$
#RedirectMatch 301 ^/index.php/en/component/glossary/$ $1&glossid=3$

#RedirectMatch 301 /index.php/de/component/glossary/?letter=All&glossid=3 http://www.domain.com/index.php/de/component/glossary/?letter=All&glossid=2
#RedirectMatch 301 /index.php/en/component/glossary/?letter=All&glossid=2 http://www.domain.com/index.php/en/component/glossary/?letter=All&glossid=3

#Franke Tweak
#RedirectMatch 301 ^/index.php/de/component/glossary/([a-zA-Z0-9_-]*) http://www.domain.com/index.php/de/component/glossary?glossid=2$1
#RedirectMatch 301 ^/index.php/en/component/glossary/([a-zA-Z0-9_-]*) http://www.domain.com/index.php/en/component/glossary?glossid=3$1

#Redirect permanent /index.php/de/component/glossary/ http://www.domain.com/index.php/de/component/glossary?&glossid=2
#Redirect permanent /index.php/en/component/glossary/ http://www.domain.com/index.php/en/component/glossary?&glossid=3

#Franke Tweak --
#Redirect 301 ^/index\.php/de/component/glossary/(.*)$ /$1&glossid=2
#Redirect 301 ^/index\.php/en/component/glossary/(.*)$ /$1&glossid=3


RewriteEngine On
RewriteCond %{QUERY_STRING} task=list&glossid=([0-9])&letter=(.*)
RewriteRule index.php/de/component/glossary/ index.php/de/component/glossary/?task=list&glossid=2&letter=%1

RewriteCond %{QUERY_STRING} task=list&glossid=([0-9])&letter=(.*)
RewriteRule index.php/en/component/glossary/ index.php/en/component/glossary/?task=list&glossid=3&letter=%1

03.02.2009 21:05

6 Mathias (Gast)

Nachtrag:

Ich höre grad vom Hoster, dass SUSE-Linux 10 läuft und das das strengere mod-rewrite-Rules haben soll. Liegt es vielleicht daran?

03.02.2009 21:16

7 Jörg Kruse

Wenn, dann käme es wohl mehr auf die Apache-Version an.

Modrewite ist aber geladen und aktiviert?

Hast du Zugriff auf die error_log Datei des Servers? Die könnte noch Aufschluss geben über die Ursache des 500ers.

03.02.2009 21:20

8 Mathias (Gast)

Apache Version 2.2.10, Suse 10.1, PHP 5.26

03.02.2009 21:23

9 Mathias (Gast)

Mod-rewrite ist aktiviert.
Error-log wird mir zugeschickt. Poste ich sobald er da ist.

03.02.2009 21:24

10 Mathias (Gast)

Der Techniker hat keinen Error-Log von heute Abend gefunden. Hmm. Dann weiss ich jetzt auch nicht weiter.

03.02.2009 22:18