Avatar billede BTEngineer Novice
22. august 2013 - 15:11 Der er 3 kommentarer og
1 løsning

Htaccess URL Rewrite - Problem med Stylesheeten

Hej.

Prøver lige igen..

Jeg sidder også roder lidt i en htaccess fil. Jeg er bestemt ikke ekspert på området, men det er da lykkedes mig flere gange at få det til at fungerer efter behov.

I øjeblikket driller følgende kode mig:

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^(.*)$ index.php?side=$1 [NC]
RewriteRule ^(.*)/(.*)$ $index.php?side=$1/$2 [NC]

Det er eksempelvis www.mypage.dk/whatever eller www.mypage.dk/whatever/whatever som jeg gerne vil kunne tilgå, og således at htaccess-filen sørger for at det bliver sendt til index.php?side=HER, da min side er opbygget med et simpelt PHP-script på index'en hvor alle siderne bliver inkluderet:

<?php
if(empty($_GET[side])) {
    $filename = "forside.php";
} else {
    $filename = "$_GET[side].php";
}
           
if (file_exists($filename)) {
    include("$filename");
} else {
    print "Siden <b>$_GET[side]</b> kunne ikke findes på ";
    print $_SERVER["HTTP_HOST"];
}
?>

Det virker faktisk, men lige pludselig fungerer min stylesheet ikke, og siden, for at sige det lige ude, fucker helt op. Jeg troede det kunne rettes ved at tilføje en "/" foran css/style.css, men det hjalp intet.

Jeg håber der er nogle der har lyst og tid til at hjælpe, for det driller virkelig..

MVH
Henrik
Avatar billede BTEngineer Novice
22. august 2013 - 15:46 #1
Yæsyæs.. Fik selv løst problemet. Problemet var at jeg havde lagt hele min side i en mappe for at teste det hele. Det hjalp at flytte hele skidtet til selve root mappen :)
Avatar billede cronaldo Nybegynder
23. august 2013 - 01:27 #2
Du har nogle problemer med din kode - den er ikke helt god...

---

$filename = "$_GET[side].php";
BØR VÆRE: $filename = $_GET['side'] . ".php";

---

if(empty($_GET[side])) {
BØR VÆRE: if(empty($_GET['side'])) {

---

print "Siden <b>$_GET[side]</b> kunne ikke findes på ";
BØR VÆRE: print "Siden <b>" . $_GET['side'] . "</b> kunne ikke findes på ";
Avatar billede repox Seniormester
23. august 2013 - 10:34 #3
#2 "BØR VÆRE" er vist så meget sagt.

Du kan med rette bruge interpolering i dine strenge, så længe du gør det på den rigtige måde.

$filename = "{$_GET['side']}.php";


- er helt i tråd med den officielle dokumentation.

Ligeledes er
print "Siden <b>{$_GET['side']}</b> kunne ikke findes på ";

også helt i orden.

Problemet er primært at han ikke indkapsler sine indeks i sine arrays korrekt.

Sikkerheden i koden bør også optimeres.
Avatar billede cronaldo Nybegynder
23. august 2013 - 13:16 #4
repox: Ja, beklager min formulering - klokken var mange. Jeg synes dog, at det er dårlig praksis slet ikke at hhv. bruge interpolering eller indkapsle sine array-keys, når man kalder ;-)

God dag til jer alle :-)
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