Gå til innhold

Kunstig mappestruktur i URL ved hjelp av htaccess


Anbefalte innlegg

Hei!

 

Jeg driver på med å konstruere en side som henter innhold nesten utelukkende fra databaser (for lettere å kunne redigere sideoppbygningen). Jeg har i det siste riktignok blitt skikkelig inspirert av sånn ryddig struktur på URL-en som får det til å se ut som det er i mapper alt sammen, sånn som på Last.fm.

 

Det jeg har gjort da er følgende:

 

RewriteEngine On
RewriteRule ^(.*) php/index.php [L]

 

...som da gjør at all trafikk sendes til den ene PHP-filen, som igjen henter riktig informasjon til brukeren ved å bruke explode()-funksjonen på URL-en.

 

Spørsmålet er: Er det mulig å dirigere all trafikk som går under for eksempel mappen admin/ til en annen fil? Sånn som:

 

RewriteRule ^admin/(.*) php/admin.php [L]

 

...mens all forespørsler som ikke har admin/ i adressen fremdeles benytter følgende regel:

 

RewriteRule ^(.*) php/index.php [L]

 

...?

 

Om jeg bare plasserer de to etter hverandre, går nemlig all trafikk (også alle forespørsler med "admin/") til php/index.php... Naturligvis, et alternativ er vel å ikke ha dynamisk URL helt ned til sideroten, men det hadde vært veldig fint om det var mulig. Jeg kan tenke meg at det finnes et alternativ i å lage en PHP-fil som dirigerer all trafikk dit den skal, men å bruke en sånn en som et mellomledd for all trafikk blir vel litt vel heftig (og gjør lasting en smule tregere)?

 

EDIT: Rettet en bitteliten feil...

Endret av Dommedagsprofet
Lenke til kommentar
Videoannonse
Annonse

Hva om du bare bytter plass slik at admin-regelen står til sist?

Godt mulig du kan bruke et statement ala:

 

RewriteRule !admin/^(.*) php/admin.php [L]

 

Men jeg har ikke så mye peil på htaccess, så jeg kan ikke fortelle deg hvordan det skal gjøres...

Lenke til kommentar
Hva om du bare bytter plass slik at admin-regelen står til sist?

Godt mulig du kan bruke et statement ala:

 

RewriteRule !admin/^(.*) php/admin.php [L]

 

Men jeg har ikke så mye peil på htaccess, så jeg kan ikke fortelle deg hvordan det skal gjøres...

6513280[/snapback]

Hmm ... må innrømme at jeg er ei noen ekspert selv. Prøvde litt ulike varianter av den uten hell... Både plassere regelen foran og etter. Også mener jeg å huske at ^ betyr URL-en til kjernen av serveren, så den skal vel egentlig være før admin slik at det blir !^admin/(.*), tror jeg.

Lenke til kommentar

OK, har funnet en midlertidig løsning ved å putte følgende på toppen av index.php:

 

$url = $_SERVER["REQUEST_URI"];
$url_array = explode('/',$url);
if($url_array[1] == "admin") {include "admin.php";
die;}

 

...selv om jeg gjerne skulle ønsket at Mr. Htaccess tok seg av det. Spørsmålet er om det er tregende på farten at alt går innom index.php? Jaja. Skrik ut hvis dere har noen løsninger, da, folks... :)

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...