Avatar billede googolplex Novice
11. januar 2004 - 13:53 Der er 10 kommentarer og
1 løsning

Mod rewrite

Jeg hat følgende i .htaccess:

RewriteEngine On
RewriteRule ^tilmelding/(.*)/ /tilmelding.php?klasse=$1
RewriteRule ^aktivering/(.*)/(.*)/(.*)/ /aktivering.php?lektieemailID=$1&klasse=$2&kode=$3
RewriteRule ^afmelding/(.*)/(.*)/ /afmelding.php?email=$1&klasse=$2

Men man kan stadig kalde adresserne på den gamle måde, hvordan forhindrer jeg det ?
Eller forhindrer at man overhovedet kan kalde PHP-filer?
Avatar billede htm Nybegynder
11. januar 2004 - 14:04 #1
Hvad er de gamle adresser?

Hvad vil du have det skal gøre?
Avatar billede googolplex Novice
11. januar 2004 - 14:15 #2
1. Gamle adresser skal henvise til index.php.


En ting til, hvis jeg skriver http://domaene.dk/tilmelding/, så kan den ikke finde det siden, jeg skal skrive http://domaene.dk/tilmelding//. Jeg kan godt forstå hvorfor det er sådan, men hvordan ændrer jeg det, så jeg ikke nødvendigvis behøver at kalde siden med parametre?
Avatar billede htm Nybegynder
11. januar 2004 - 15:22 #3
Lige umiddelbart kan du nok bruge dette her?

-------------------------------------------------------------------------------
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}                !-F
RewriteRule ^tilmelding/?(.*)?/?$            /tilmelding.php?klasse=$1 [L]
RewriteRule ^aktivering/?(.*)?/?(.*)?/?(.*)?/?$    /aktivering.php?lektieemailID=$1&klasse=$2&kode=$3 [L]
RewriteRule ^afmelding/?(.*)?/?(.*)?/?            /afmelding.php?email=$1&klasse=$2 [L]

RewriteCond %{REQUEST_FILENAME}        !=\.php$
RewriteRule ^(.*)\.php    ind.php
-------------------------------------------------------------------------------

? betyder 0 eller 1 det vil sige de steder hvor de står vil den enten have eks. / eller ingen /. Ligeså med et argument eller intet argument.

Den nederste sætning sørger for at du ikke kan forespørge direkte på php-filerne.

Ikke sikkert den passer helt til dig, men du kan nok tilpasse den?
Avatar billede googolplex Novice
11. januar 2004 - 17:13 #4
Ok, men kan du forklare mig hvad følgende betyder:

RewriteCond %{REQUEST_FILENAME} (Og hvorfor skriver du det 2 gange)
!-F
[L]

Jeg havde selv lavet:

RewriteRule \.php nonexistent.php - Hvorfor virkede det ikke ?
Avatar billede htm Nybegynder
11. januar 2004 - 17:23 #5
RewriteCond er en betingelse i mod_rewrite. Her går vi udfra det filnavn der bliver forespurgt.
!-F betyder, fortsæt hvis den ikke eksisterer. Læs lidt om det her: http://httpd.apache.org/docs/mod/mod_rewrite.html#RewriteCond
[L] betyder at det er sidste regel. Hvis den ikke er med vil rewritemaskinen fortsætte også til sidste regel.

RewriteCond %{REQUEST_FILENAME}        !=\.php$ skal være uden ! for at den matcher php-filer. :-)
RewriteCond %{REQUEST_FILENAME}        !=\.php$
Avatar billede htm Nybegynder
11. januar 2004 - 17:24 #6
ups der kom lidt for meget med :-) Sidste linie er:

RewriteCond %{REQUEST_FILENAME}        =\.php$
Avatar billede googolplex Novice
11. januar 2004 - 18:14 #7
Det virker...næsten :)

Har skrevet således:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}                !-F
RewriteRule ^tilmelding/?(.*)?/?$            /tilmelding.php?klasse=$1 [L]
RewriteRule ^aktivering/?(.*)?/?(.*)?/?(.*)?/?$    /aktivering.php?lektieemailID=$1&klasse=$2&kode=$3 [L]
RewriteRule ^afmelding/?(.*)?/?(.*)?/?            /afmelding.php?email=$1&klasse=$2 [L]

RewriteCond %{REQUEST_FILENAME}        =\.php$
RewriteRule ^(.*)\.php    index.php

Men jeg kan stadig kalde http://lektieland.dk/bob.php uden at den går til index.php, den kalder den bare siden bob.php.
Avatar billede htm Nybegynder
11. januar 2004 - 18:30 #8
Du kan vist godt slette denne:
RewriteCond %{REQUEST_FILENAME}        =\.php$

Og hvis den eksisterer (bob.php) skal du nok også fjerne
RewriteCond %{REQUEST_FILENAME}                !-F
Da den tjekker om filen eksisterer, hvis den gør, så afbryder den.
Avatar billede googolplex Novice
11. januar 2004 - 19:11 #9
Nu har jeg dette:

RewriteEngine On
RewriteRule ^tilmelding/?(.*)?/?$ /tilmelding.php?klasse=$1 [L]
RewriteRule ^aktivering/?(.*)?/?(.*)?/?(.*)?/?$ /aktivering.php?lektieemailID=$1&klasse=$2&kode=$3 [L]
RewriteRule ^afmelding/?(.*)?/?(.*)?/? /afmelding.php?email=$1&klasse=$2 [L]
RewriteRule ^(.*)\.php /index.php

Men så får jeg bare en Internal Server Error, så der må være en fejl ?
Avatar billede htm Nybegynder
11. januar 2004 - 19:53 #10
Se i din errorlog hvad den brokker sig over.
Avatar billede googolplex Novice
11. januar 2004 - 21:42 #11
Jeg kigger på det senere, kan ikke lige hitte hoved og hale i den errorlog. Vender tilbage med et nyt spørgsmål, men det virker næsten perfekt, så tak indtil videre!!
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
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

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