Avatar billede phpmanden Nybegynder
03. juni 2006 - 16:07 Der er 13 kommentarer og
2 løsninger

.htaccess fil er den korrekt + links virker ikke mere

Kunne godt bruge lidt forståelse af dette:

Sådan ser filen ud:
-------------------------------
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !produkter/([0-9])
RewriteRule ^orderok/([0-9]+)/([0-9]+)/([0-9]+)/? /index.php?m=orderok&okey=$1&ukey=$2&tkey=$3 [L]
RewriteRule ^order/([0-9]+)/([0-9]+)/([0-9]+)/? /index.php?m=order&okey=$1&ukey=$2&tkey=$3 [L]
RewriteRule ^ordrestatus/([0-9]+)/([0-9]+)/([0-9]+)/? /index.php?m=ordrestatus&ordrenum1=$1&unikkode=$2&tlf1=$3 [L]
RewriteRule ^showprodukter/([0-9]+)$ /?m=showprodukter&id=$1 [L]
RewriteRule ^([a-z0-9-]+)/([a-z0-9-]+)/([a-z0-9]+)/([0-9]+)$ /index.php?calis=$1&calis2=$2&m=$3&id=$4
RewriteRule ^produkter/([0-9]+)$ /?m=produkter&kid=$1 [L]
RewriteRule ^([A-Za-z0-9]+)$ /?m=$1 [L]
RewriteRule ^[a-z0-9-]+/([a-z]+)/([0-9]+)/[a-z0-9-]+.html index.php?m=$1&id=$2
RewriteRule ^([a-z]+)/([0-9]+)/[a-z0-9-]+.html index.php?m=$1&kid=$2
RewriteRule ^([a-z0-9-]+)/[a-z0-9-]+.html index.php?m=$1

Options -Indexes
Options -MultiViews

-----------------------------

Hvad betyder:

RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !produkter/([0-9])

og hvad betyder det når der står [L] bagefter ?


+

at de VIRKELIGE links som eksistere fysisk virker ikke mere ?

fx. www.side.com/mappe/fil.html <- der bliver den side ikke vist mere ????
Avatar billede coderdk Praktikant
03. juni 2006 - 20:06 #1
Avatar billede coderdk Praktikant
03. juni 2006 - 20:07 #2
Avatar billede phpmanden Nybegynder
03. juni 2006 - 20:24 #3
nu skrev jeg jo netop herinde for ikke at skulle til at læse store tunge engelske manualer igennem ;) har kigget i dem men forstår det ikke, og kan ikke få det til at virke!
Avatar billede coderdk Praktikant
03. juni 2006 - 21:15 #4
RewriteCond %{REQUEST_FILENAME} !-F

"'-F' (is existing file via subrequest)
Checks if TestString is a valid file and accessible via all the server's currently-configured access controls for that path. This uses an internal subrequest to determine the check, so use it with care because it decreases your servers performance!"

!-F betyder så det modsatte - Altså den skal fortsætte hvis IKKE %{REQUEST_FILENAME} kan tilgås

RewriteCond %{REQUEST_FILENAME} !produkter/([0-9])

Betyder at den ikke skal læse videre hvis %{REQUEST_FILENAME} indeholder produkter/X hvor X = 0-9

[L] betyder Last rule, altså at den ikke skal processe flere hvis denne regel bliver kørt

Det står alt sammen i det første link jeg skrev, det er mere udpenslet i nogle af de tutorials som findes i den googlesøgning jeg linker til
Avatar billede gizmo-gizmo Nybegynder
03. juni 2006 - 22:00 #5
phpmanden: Når man laver en RewriteRule bruger man jo regulære udtryk, så i første omgang ville det være en god idé at sætte sig lidt ind i dem. Der er lidt forklaring til url omskrivning fra htaccess her på dansk: http://phpartikler.dk/artikler/htaccess.php  Den er dog ikke så omfattende som dem coderdk linker til. Din fil ser lidt voldsom ud, så jeg ville nok tage et skridt af gangen :-)
Avatar billede phpmanden Nybegynder
03. juni 2006 - 22:02 #6
ok...men har i en forklaring på hvorfor nogle af de rigtige links ikke virker mere ?
Avatar billede coderdk Praktikant
03. juni 2006 - 22:12 #7
Du kan prøve at ændre !-F til !-f (fra sub-request til regular file) og se om det har nogen betydning.

Men så vidt jeg kan se, så vil site.dk/mappe/fil.html ikke virke pga. den sidste: RewriteRule ^([a-z0-9-]+)/[a-z0-9-]+.html index.php?m=$1 Den matcher jo den... Du kan prøve at kommentere den ud (sæt # foran linjen)
Avatar billede phpmanden Nybegynder
03. juni 2006 - 23:28 #8
hvis jeg ændre til lille f betyder ikke noget, men

Begge dele virker hvis jeg gør sådan her :) :

#RewriteRule ^([a-z0-9-]+)/[a-z0-9-]+.html index.php?m=$1

men hvad gør den # ?
Avatar billede coderdk Praktikant
04. juni 2006 - 01:33 #9
"Du kan prøve at kommentere den ud (sæt # foran linjen)"

Den kommenterer linjen ud - Webserveren ignorerer linjen.

Med linjen, vil /mappe/fil.html kaldes som /index.php?m=mappe
Avatar billede phpmanden Nybegynder
06. juni 2006 - 17:35 #10
Jeg er ikke helt med, men:

Hvis jeg sætter # foran eller sletter linien, så virke BÅDE de fysiske og virtuele link.... HVORDAN KAN DET VÆRE ?

Jeg kan forstå at de fysiske links virker, men hvordan kan de virtuele stadig virke ? når man fjerner linien ???
Avatar billede coderdk Praktikant
06. juni 2006 - 18:41 #11
Der er jo stadig 9 linjer der håndterer forskellige "virtuelle" links. Den sidste er blot en anden type links (som nu ikke vil fungere).
Avatar billede phpmanden Nybegynder
06. juni 2006 - 18:44 #12
RewriteRule ^([a-z0-9-]+)/[a-z0-9-]+.html index.php?m=$1

Med linjen, vil /mappe/fil.html kaldes som /index.php?m=mappe

Hvorfor virker det virtuele links som ser sådan her ud: www.site.com/blomster/sol.html STADIG selvom den linie bliver slettet, det burde de da ikke ?
Avatar billede coderdk Praktikant
06. juni 2006 - 20:42 #13
Så du har ikke et script der hedder blomster.php eller en folder der hedder blomster og en fil der hedder sol.html ?
Avatar billede phpmanden Nybegynder
06. juni 2006 - 21:41 #14
Doh..... jeg havde testet de forkerte links :(

Når jeg sætter # foran eller sletter linien så virker de virtuele ikke mere! men så virker de fysiske!

så er det jo som det skal være, men så er vi tilbage til starten, hvordan får jeg begge ting til at virke! ?
Avatar billede phpmanden Nybegynder
18. juni 2006 - 23:19 #15
Nå nu har jeg lavet mine links om så jeg kan bruge de fysiske links igen, så vi kan dele point for tiden du brugte ;)
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