Avatar billede encorez Nybegynder
29. september 2009 - 22:42 Der er 8 kommentarer og
1 løsning

Fange style.css ved write-rule

Hej

Jeg bruger denne rewrite rule
"RewriteEngine on
RewriteRule ^(.+)/$ index.php"

I den index-fil cil jeg gerne refere til et stylesheet der ligger et bibliotek højere oppe.

Den ser normalt sådan ud for at fange den style.css der ligge i samme bibliotek som index.php
<link href="/style.css" media="screen" rel="stylesheet" type="text/css" />

Når jeg prøver at fange den der ligger et bibliotek højere oppe forsøger jeg dette
<link href="/../style_common.css" media="screen" rel="stylesheet" type="text/css" />
men uanset hvilke tegn jeg forsøger at sætte foran style_common får jeg det ikke til at virke.

Nogen gode forslag please?

Mvh. Simon
Avatar billede repox Seniormester
30. september 2009 - 08:46 #1
Tror du vil få mere held i sprøjten ved at spørge i den rigtige kategori.
Det her har ingenting at gøre med PHP - overhovedet...

Dit spørgsmål er også dårligt formuleret. For mig virker det som om du ikke kan få din rewrite regler til at passe til din CSS fil, men kigger man på dine kodeeksempler ser det mest ud som om du ikke ved nok om HTML samt absolutte/relative stier.

Du kan heller ikke have en 'rod' på en relativ sti:
/../style_common.css er noget sludder.
Enten er det ../style_common.css eller også er det /style_common.css
Avatar billede showsource Seniormester
30. september 2009 - 13:15 #2
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

# her din rewrite rule

# og brug /style.css, ikke ../style.css
Avatar billede encorez Nybegynder
30. september 2009 - 18:57 #3
showsource -> tak for det konstruktive svar. Jeg har lige prøvet din rewrite præcis som du har skrevet den, men nu henviser den ikke længere til index.php som den anden rewrite rule gjorde. Skal jeg kombinere min og din?
Husk på jeg forsøger at referere til en style.css der ligger et bib højere oppe end der hvor selve hjemmesiden ligger, så skal referencen vel være noget lignende ../

repox...
Slap nu af repox. Du har ret med kategori, det har ikke at gøre med php som jeg koder i, og jeg ikke lige se hvor den eller skulle være.
Jeg er imponeret over du kan se ud af så lidt hvad jeg ved om HTML. Ang. de relative stier... grunden til at jeg har forsøgt med /../ er at pga. min rewrite rule er jeg nødt til på alle mine href og scr at skriver / foran for den vil sluge det. Og det ville man jo ikke normalt gøre. Derfor har jeg eksemplet skrevet /../ istedet for ../ som man normalt ville bruge.
Avatar billede repox Seniormester
30. september 2009 - 20:27 #4
#3
Hvad er det lige jeg skal slappe af med?

Nå, hvad der er relevant for tråden:
Din rewrite regel tager kun imod stier der slutter med "/" - jeg antager det ikke er hensigten og tillader at komme med mit eget forslag til en rewrite som du måske kan anvende:

Options +FollowSymLinks
RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ /index.php?rt=$1 [L,QSA]


Når du så skriver http://example.org/foo eller http://example.org/foo/bar
vil du i index.php få en GET variabel ($_GET["rt"]) tilgængelig med indholdet "foo" eller "foo/bar".

Så er spørgsmålet jo blot hvordan du vil behandle din CSS regel - man kunne jo:

<?php

  $parts = explode("/", $_GET["rt"]);
 
  if($parts[0] == "css")
  {
    //her kan du gøre noget der generer din css eller hvad du vil
  }

?>


Det er vigtigt at huske at hvis filen rent faktisk eksisterer så vises den normalt af apache og ikke gennem index.php.
Avatar billede encorez Nybegynder
01. oktober 2009 - 11:22 #5
Tak for det.
Jeg har nu sat dette foran i min rule og min side virker stadig som normalt.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

Men skulle det også hjælpe på mit issue med at få et stylesheet til at virke som uden for det bibliotek som selve hjemmesiden ligger i?

Som foreksempel
<link href="../style_common.css" media="screen" rel="stylesheet" type="text/css" />
Avatar billede repox Seniormester
01. oktober 2009 - 11:33 #6
Du bliver nød til at lade PHP hjælpe dig med den, når det er PHP du vil køre dynamikken i.

Hvis du gerne vil have apache til at hente stylesheets fra andre mapper en roden, må du lave yderligere rewrite regler som kan tilknyttes specifikt til css filer.
Avatar billede encorez Nybegynder
04. oktober 2009 - 10:46 #7
Hej

Har fået det til at virke nu. Læg et svar begge to som tak for hjælpen.


For det første kom jeg på en workaround i form at at jeg referer til et stylesheet som hedder style_common.php og som ligger i hovedbiblioteket. I den php-fil includer jeg den css-fil som ligger et bibliotek højere oppe; include '../style.css'.

Dernæst fandt jeg ud af at jeg blev nødt til at slette denne linie fra toppen af min hjemmeside for det virkede
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
Jeg ved ikke hvorfor men det virker.
Avatar billede dkfire Nybegynder
04. oktober 2009 - 13:37 #8
Dvs. du fjerne de linjer du ikke ved hvad gør, og håber stadig dit html dokument er valid ?
Gør du det samme med php koder ?

I så fald kan du lige så godt droppe at kode i php og html og gå over til word eller bare ren tekst, da intet af det du laver i php eller html vil virke.
Avatar billede encorez Nybegynder
27. oktober 2009 - 13:15 #9
svar...
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