Iltaa. Törmäsin johonkin ihme ongelmaan, siirrettyäni sivut nettiin, eli layout toimii oikein, kun tulen sivulleni, esim domain.fi, lataa tyylit ja javascriptit, mutta kun siirryn alisivulle, niin layout katoaa (eli samalla tyylit yms.). Pelkästään "staattinen" alasivu näkyy ilman muotoilua. Tuntuu ikäänkuin layoutista tulisi sivunlataus eteenpäin, eikä vaan "icludeteta" sitä ittensä sisään.
Olen yrittänyt käyttää eri vaihtoehtoja css ja js sourceksi, mutta ei ole vaikutusta. Vähän koodia:
<head> <link href="http://www.domain.fi/css/style.css" rel="stylesheet" type="text/css" /> <script type="text/javascript" src="http://www.domain.fi/js/jquery-1.7.1.min.js"></script> <!-- olen yrittänyt myös src ="js/jquery...etc" ja muitakin vaihtoehtoja
body osio:
<?php $pages = array ( "etusivu" => "etusivu.php", "yhteystiedot" => "yhteystiedot.php", "palvelut" => "palvelut.php", "virhe" => "virhe.php" ); $page = (isset($_GET['page'])) ? $_GET["page"] : "etusivu"; ?> <div id="content"> if (isset($pages[$page])) include($pages[$page]); </div>
htaccess:
RewriteEngine on Options +FollowSymlinks RewriteBase / RewriteRule ^([^/\.]+)/$ /index\.php?page=$1 RewriteRule ^([^/\.]+)$ /index\.php?page=$1 [L]
Lokaalilla serverillä kaikki toimi hyvin, mut kun siirsin ne shellit.orgin palvelimelle, niin ei enään toimi. Joku viittausongelma tuossa on, mutta en vaan mitenkään keksi mikä. Ihan samalla layoutpohjalla oon tehny muitakin, jotka ovat toiminut.
Katso selaimen kehittäjäkonsolilla mitä se yrittää ladata ja mikä ei lataudu.
Tai laita linkki sivuun, jossa ongelma esiintyy.
Pitäisikö ehkä laittaa myös ensimmäiseen sääntöön L-lippu? Korvaavassa tekstissä ei myöskään kuulu escapettaa merkkejä, eli \-merkki on väärin.
Sivunvaihdon jälkeen se ei lataa mitään tyylejä tms. enkä saanut koukutettua kohtaa missä vaiheessa ne häviää.
Metabolixin ehdottamatkaan jutut ei toimunu.
Eikös tuonne sekaan pitäisi laittaa:
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
Ettei ohjaus ohjaa ihan kaikkia tiedostoja index.php:lle?
Jos osoitteen lopussa on /-merkki, selain tulkitsee tämän hakemistoksi (selainhan ei tiedä ohjauksistasi mitään) ja yrittää hakea tyylejä kyseisestä hakemistosta, ellet muuta käske. Kokeile kirjoittaa tyylien ym. osoitteet absoluuttisessa muodossa kuten "/tyyli.css".
Merri, lausekkeet eivät hyväksy pisteitä, joten tuota ongelmaa ei varmaan ole.
Onko ongelmasi jo selvinnyt? Jollei kokeile Firefoxin firebugia, on pätevä työkalu. Net välilehdellä näet millaisia hakuja selaimesi oikeasti tekee. Näet oikeasti millä pyynnöillä tyylejä haetaan, ja onnistuuko haut.
Toinen mitä kannattaa katsoa, että siirtäessäsi tiedostoja omalta koneelta (Windows?) serverille (Linux?) nuo oikeudet menee oikein ja riittävät. Tosin jos saat ladattua tyylejä aikaisemmin, tuo tuskin on ongelma.
Ei oo viä selvinnyt, ei oo ollut ihan täys motivaatio edes selvittää, ku teen tätä kaverin anoppilaan talkoilla, mutta olishan homma hyvä saada rokkaan. Käpistelin tota firebugin kanssa, ja ei tuu mitään pyyntöjä, eli ei ees yritä ladata mitään tyylejä tms. Tosin en mikään haka oo käyttämäänkään firebugia.
Jännä, että jos kirjotan osoitteen väärin, niin sillon lataa tyylit yms, mutta varsinainen kontentti on tyhjä. Eli jos mulla on määritelty "palvelut" => "palvelut.php" niin jos kirjottaa osoitteeseen esim. "..fi/palvelu", niin tyylit latautuu.
Jotain kipua siis kun ehto toteutuu
Edit: Jos joku haluaa käydä debuggaas, niin osoite on tämä. Oon siä ny säätäny kaiken näköstä, eli mikään muu ei oikeastaan pitäiskään toimia, mutta vaakamenun "palvelut" kohta pitäis olla jokseenkin kohdallaan.
Nuo muut sivut ei palvele sivun alun HTML:ää, joten tyylitkin puuttuvat ihan syystä. Tarkista hakemistoviittaukset.
Lisäksi virhe: <div id ="fullScreen">
Tuo "fullScreen" onkin vanhoja peruja, ku siihen tuli täyslevyinen leiska, mutta säädän sen tulevaisuudessa fiksummin. Mietin tuota palvelua ja yritinkin säätä palvelut sivua siihen suuntaan, mutta ei näemmä onnistunut..
runeberg kirjoitti:
Tuo "fullScreen" onkin vanhoja peruja
Virhe ei kylläkään ole kohdassa "fullScreen" vaan ennen sitä.
En nyt oikein viäkään saa kiinni, mikä mättää :) Täytyy huomenna tutkia uusin silmin :)
Kiitoksia, nyt ollaan varmasti jo lähellä!
=-merkin ympärillä ei kuulu olla välejä.
Ei, ei pysty käsittään.. Mikä tuossa nyt mättää? Koitin että sisäsivut on tyhjiä yms. mutta siltikään niissä ei lataa tyylejä..
Katso selaimella etusivun lähdekoodin alkua. Katso sitten selaimella viallisen sivun lähdekoodin alkua. Katso, kunnes tajuat sen, minkä Merri jo kertoi.
Ei käsitä. Ymmärtääkseni index.php toimii sivupohjana ja lataa haluttuun esim. diviin sivun sisällön, ja indexissä olevat footerit ja menut latautuu siinä sivussa? Kun siirtyy alasivulle se ei lataa mitään niistä ja myöskin headeri on tyhjä, paitsi että lataa sinne jonkin ihme "wrc-middle-css" ilmeisestikkin jokin chromen oma..
Mutta en hoksaa, miksi esim menu div ei lataudu tms..
Tiä asia ei taija ratketa ennen kuin kokonaisia koodinkimpaleita alkaapi näkyvä. Jokin koodin logiikka jättää header- ja footer-osiot huomioitta.
Luultavasti htaccess-ohjauksesi ei toimi ollenkaan. Korjasitko edes siitä osoitetut virheet? Tietyllä tavalla säädettynä Apache lisäksi avuliaasti tulkitsee, että "etusivu" tarkoittaa samaa kuin "etusivu.php", jolloin syntyy illuusio, että sivu "toimii". Laita htaccessiin L:n paikalle L,R ja katso, minne selain ohjautuu vai ohjautuuko ollenkaan. Pelkän PHP:n toimintaa voit tietenkin kokeilla kirjoittamalla osoitteeksi ihan itse "index.php?page=etusivu".
Onko sinulla edes yhtään hyvää syytä tuolle viritelmällesi? Sivun sisältöosan liittäminen includella aiheuttaa ongelmia, mm. sivun otsikon asetus on hankalaa eikä virhetilanteita saa käsiteltyä kunnolla. Helpompaa, tyylikkäämpää ja varmemmin toimivaa on tehdä kunnolla erillisiä sivuja, joihin vain liitetään sama ylä- ja alaosa.
<?php require_once("sivupohja.php"); tulosta_ylaosa("Otsikko"); ?> <p>Sisältöä</p> <?php tulosta_alaosa();
Aihe on jo aika vanha, joten et voi enää vastata siihen.