Avatar billede blach Nybegynder
03. august 2006 - 21:33 Der er 20 kommentarer

RewriteEngine 2 mapper

Jeg har nedenstående script, hvor jeg kan hente $_GET[page] - nu kunne jeg godt tænke mig at hente en mappe mere, altså have 2 mapper, den sidste skal kunne hentes ved f.eks. $_GET[sub]
Det skal siges, at den automatisk sorterer mapperne "de" og "en" fra.

-- coderdk script http://www.eksperten.dk/spm/700389 --
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(de|en)/(.+)$ /$1/index.php?page=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(.+)$ /index.php?page=$1 [L]
-- // --
Avatar billede nielle Nybegynder
04. august 2006 - 09:38 #1
Et bud:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(de|en)/(.+?)/(.+)$ /$1/index.php?page=$2&sub=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(de|en)/(.+)$ /$1/index.php?page=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(.+)$ /index.php?page=$1 [L]
Avatar billede nielle Nybegynder
10. august 2006 - 10:56 #2
Har du fået kigget på det?
Avatar billede blach Nybegynder
29. august 2006 - 12:24 #3
Undskyld det sene svar!!
Har lige testet det og den melder "Internal Server Error" på stier med / i... f.eks. www.domæne.dk/sti/
Avatar billede nielle Nybegynder
29. august 2006 - 12:37 #4
Mener du at den fejler på links uden en de/en-del? Eller fejler den på både:

www.domæne.dk/sti/

- og

www.domæne.dk/en/sti/

?
Avatar billede blach Nybegynder
03. september 2006 - 14:56 #5
Det er lige meget hvad jeg gør, om jeg så står på domænet www.domæne.dk,
så melder den fejlen "Internal Server Error"...
Avatar billede nielle Nybegynder
11. september 2006 - 21:25 #6
Har du adgang til webserverens log?
Avatar billede blach Nybegynder
20. september 2006 - 23:01 #7
Ja. Den udskriver:
/< sti >/.htaccess: RewriteRule: cannot compile regular expression '^(de|en)/(.+?)/(.+)$'\n

Så der er vel en fejl et sted?
Avatar billede nielle Nybegynder
21. september 2006 - 06:51 #8
Det lyder som om at den slet ikke vil fordøge det regulære udtryk. Umiddelbart gætter jeg på at det er ?-tegnet den ikke kan lide, men det er foreløbigt bare et gæt.

Prøv med:

RewriteRule  ^(de|en)/(.+)/(.+)$ /$1/index.php?page=$2&sub=$3 [L]

- i stedet.
Avatar billede blach Nybegynder
21. september 2006 - 13:17 #9
Det virker nu, som det altid har gjort. Den kan dog ikke udskrive en $sub.
Den udskriver ved:
www.domæne.dk/mappe/
echo $_GET[page] --> mappe/

Problemer er så, at hvis jeg udskriver
www.domæne.dk/mappe/side/
echo $_GET[page] --> mappe/side/
echo $_GET[sub] -->

-- Koden --
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(de|en)/(.+)/(.+)$ /$1/index.php?page=$2&sub=$3 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(de|en)/(.+)$ /$1/index.php?page=$2 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule  ^(.+)$ /index.php?page=$1 [L]
Avatar billede nielle Nybegynder
21. september 2006 - 22:59 #10
Det var netop derfor at keg ville have ?-tegn på +'et - for at stoppe den i at være "grådig" som det kaldes (page matchar så meget det kan få lov til). Det lader imidlertid til at ?-tegnet ikke er lovligt i den der variant af RegExp.

En anden løsning som du måske kan få til at virke, er denne:

RewriteRule  ^(de|en)/([^\/]+)/(.+)$ /$1/index.php?page=$2&sub=$3 [L]
Avatar billede blach Nybegynder
21. september 2006 - 23:08 #11
Okay, lyder til at du har styr på det ;-)
Desværre virker det på samme måde! Går ud fra at det skal testes vha. $_GET[page] og $_GET[sub] ?
Jeg er ret ivrig efter at få det til at virke, så skal nok skrive hurtigt tilbage :)
Avatar billede nielle Nybegynder
21. september 2006 - 23:12 #12
Den burde nu ikke virke på samme måde?!

Enten burde den slet ikke virke, eller også burde du få:

echo $_GET[page] --> mappe
echo $_GET[sub] --> side
Avatar billede nielle Nybegynder
21. september 2006 - 23:16 #13
Forresten kan det måske også være at det skal være:

RewriteRule  ^(de|en)/([^/]+)/(.+)$ /$1/index.php?page=$2&sub=$3 [L]

- men det tror jeg ikke ret meget på vil virke.


Kan du forresten sige noget mere konkret om hvad der kan stå på page-pladsen? Kan de f.eks. kun være bogstaver? Eller er tal også tilladt? Og hvad med andre tegn, som '.' eller '?' eller andet?
Avatar billede blach Nybegynder
21. september 2006 - 23:24 #14
Ja.. dette er tilladt: [^A-Za-z0-9-]
Tjekker lige om det virker bedre..
Avatar billede blach Nybegynder
21. september 2006 - 23:28 #15
Gør det ikke... :/ kan stadig ikke få noget frem som $_GET[sub] .. har jeg ikke kunnet på nogen af koderne indtil videre.
Avatar billede blach Nybegynder
21. september 2006 - 23:34 #16
Og tester med denne url:
http://domæne.dk/mappe/side/test/
Avatar billede nielle Nybegynder
22. september 2006 - 06:43 #17
Var det dette som ikke virker?

RewriteRule  ^(de|en)/([A-Za-z0-9-]+)/(.+)$ /$1/index.php?page=$2&sub=$3 [L]

Læg mærke til at jeg skriver [A-Za-z0-9-] - ikke [^A-Za-z0-9-].
Avatar billede blach Nybegynder
22. september 2006 - 09:24 #18
Det virker heller ikke.. Kan ikke få noget $_GET[sub] frem!
Avatar billede blach Nybegynder
22. september 2006 - 11:49 #19
Hmm, hvis det ikke kan lade sig gøre, kan jeg vel bare dele den page op?`
F.eks. hvis jeg i $_GET[page] får mappe/side/

Så kan jeg jo bare tjekke hvad den indeholder og selv dele den op i 2 foldere?
Så jeg får
$1 = mappe;
$2 = side;
Avatar billede nielle Nybegynder
22. september 2006 - 18:45 #20
I 21/09-2006 13:17:10 skriver du at du indtaster denne adresse:

www.domæne.dk/mappe/side/

Har du også afprøvet uden /'en tilsidst? Altså med:

www.domæne.dk/mappe/side

Hvad sker der hvis du prøver koden fra 22/09-2006 06:43:49 med den?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester