Gå til innhold

mod_rewrite og skråstreker


Anbefalte innlegg

Lite spørsmål om mod_rewrite;

Har følgende RewriteRule:

RewriteRule ^(.*)php/(.*)$ $1?page=php&script=$2 [NC]

Funker fett med f.eks domene.com/php/, men hvis jeg fjerner den siste slash'en blir det 404. Hvordan får jeg gjort slash'en etter "php" (og etter den andre "(.*)"-en) "valgfri".

 

For å kanskje gjøre det litt knotete spørsmålet lettere å forstå, noen eksempel-URLer som jeg vil ha til å funke:

domene.com/php/ funker

domene.com/php funker ikke

domene.com/php/test/ funker, men $script-variabelen i URL får verdien "test/" med slash'en

domene.com/php/test funker

Lenke til kommentar
Videoannonse
Annonse

Har du fått det til enda, Loomy?

Du kan vel bare legge til flere RewriteRule's ?

f.eks

RewriteRule ^(.*)php$ $1?page=php [NC]
RewriteRule ^(.*)php/(.*)$ $1?page=php&script=$2 [NC]
RewriteRule ^(.*)php/(.*)/$ $1?page=php&script=$2 [NC]

Muligens?

 

PCRE-syntaksen som mod_rewrite bruker finner man litt bedre dokumentasjon på her

 

Må forøvrig også minne på at det her er ett stykke unna PHP.

 

edit: testa litt nærmere selv nå, mulig det ikke funker helt, eller at du må bruke noen andre Regular expressions.

Endret av LoS
Lenke til kommentar

Hehehe. Hvis du vil ha et valgfritt tegn eller en valgfri tegngruppe er det ikke verre en at du legger til et spørsmålstegn etter tegnet som skal være valgfritt.

 

Derfor er jeg ganske sikker på at følgende vil fungere:

RewriteRule ^(.*)php/?([^./]*)/?$ $1?page=php&script=$2 [NC]

 

:thumbup:

 

Edit: Forandret litt slik at du slipper at skråstreken er med i variabelen $2. Merk at det nå ikke er tillatt med skråstreker eller punktum'er i variabel $2 i det hele tatt (dette bidrar til å gjøre scriptet sikrere).

Endret av Lokaltog
Lenke til kommentar

Akkurat nå så ser min slik ut:

RewriteRule ^(.*)/$ /index.php?page=$1

Er ikke så veldig stø på mod_rewrite, anyways så kan jeg nevne at jeg sjekker varaiblen til page i phpscriptet i stedet for i "regelen" med en regex.

kan bytte ut (.*) med ([a-z0-9]) steden for eksempel.

Lenke til kommentar

hmm.... jeg åpnet notisblokk og skrev følgende:

 

RewriteEngine on
RewriteRule ^(.*)/$ /index.php?page=$1

 

Deretter lagret jeg denne som .htaccess og lastet den opp i "root"-mappa, men ingenting skjedde. Jeg prøvde også å laste opp filen til mappen der sidene som blir inkludert ligger. Har jeg glemt noe? En annen ting som er litt merkelig er at jeg ikke kan se .htaccess-filen med ftp-klienten min (bruker WS_FTP Pro) selv om jeg er _helt_ sikker på at den ble lastet opp.. Jeg får heller ikke opp noen melding om jeg vil skrive over den aktuelle filen når jeg laster opp en ny .htaccess fil.

Lenke til kommentar

Den skal ligge i dokumentrota, httpdocs eller public_html eller hva stw kaller det. Så skal du bare bruke dittdomene.no/hvasomvanligvisstodipage/.

 

edit: stw har tydeligvis skrudd av visningen av skjulte filer, filer med . foran blir ofte gjort usynlige på linux, derfor ser du den ikke.

 

Nå husker jeg ikke helt hva du stilte på i ftp-programmet, men i shell så bruker man ls -a hvis jeg ikke husker helt feil nå.

Endret av LoS
Lenke til kommentar

Lokaltog: Det funket heller dårlig :)

Får faktisk ikke opp hovedsiden engang. I hvertfall ikke når det er sånne ([^./]*) inni bildet.

 

Her er for øvrig hele mod_rewrite-avdelingen i (den hittil best fungerende) htaccess-filen:

RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^.htaccess$ - [F]
RewriteRule ^(.*)main/$ $1?page=main [NC]
RewriteRule ^(.*)tutorials/(.*)$ $1?page=tutorials&view=$2 [NC]
RewriteRule ^(.*)php/(.*)$ $1?page=php&script=$2 [NC]
RewriteRule ^(.*)htmlcss/(.*)$ $1?page=htmlcss&article=$2 [NC]

Noe som ikke hører hjemme der, mon tro? :hmm:

 

EDIT: Er vel ikke så veldig viktig å blokke punktum og skråstreker på dette stadiet. Dette vil jeg uansett ha en sperre for i selve include-scriptet.

Endret av Loomy
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...