Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: php layout ei toimi

Sivun loppuun

runeberg [03.04.2012 22:06:50]

#

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.

Grez [03.04.2012 22:17:00]

#

Katso selaimen kehittäjäkonsolilla mitä se yrittää ladata ja mikä ei lataudu.

Tai laita linkki sivuun, jossa ongelma esiintyy.

Metabolix [03.04.2012 22:46:54]

#

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.

runeberg [06.04.2012 22:59:07]

#

Sivunvaihdon jälkeen se ei lataa mitään tyylejä tms. enkä saanut koukutettua kohtaa missä vaiheessa ne häviää.

Metabolixin ehdottamatkaan jutut ei toimunu.

Merri [06.04.2012 23:05:19]

#

Eikös tuonne sekaan pitäisi laittaa:

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

Ettei ohjaus ohjaa ihan kaikkia tiedostoja index.php:lle?

Metabolix [06.04.2012 23:12:13]

#

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.

ZeroGravity [09.04.2012 10:03:05]

#

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.

runeberg [11.04.2012 21:55:45]

#

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

if (isset($pages[$page])) include($pages[$page]);

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.

Merri [11.04.2012 22:07:26]

#

Nuo muut sivut ei palvele sivun alun HTML:ää, joten tyylitkin puuttuvat ihan syystä. Tarkista hakemistoviittaukset.

Lisäksi virhe: <div id ="fullScreen">

runeberg [11.04.2012 22:12:53]

#

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..

Metabolix [11.04.2012 22:15:06]

#

runeberg kirjoitti:

Tuo "fullScreen" onkin vanhoja peruja

Virhe ei kylläkään ole kohdassa "fullScreen" vaan ennen sitä.

runeberg [11.04.2012 22:20:33]

#

En nyt oikein viäkään saa kiinni, mikä mättää :) Täytyy huomenna tutkia uusin silmin :)

Kiitoksia, nyt ollaan varmasti jo lähellä!

Metabolix [11.04.2012 22:37:06]

#

=-merkin ympärillä ei kuulu olla välejä.

runeberg [23.04.2012 21:11:23]

#

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ä..

Metabolix [23.04.2012 21:18:27]

#

Katso selaimella etusivun lähdekoodin alkua. Katso sitten selaimella viallisen sivun lähdekoodin alkua. Katso, kunnes tajuat sen, minkä Merri jo kertoi.

runeberg [23.04.2012 21:33:46]

#

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..

Merri [24.04.2012 00:04:28]

#

Tiä asia ei taija ratketa ennen kuin kokonaisia koodinkimpaleita alkaapi näkyvä. Jokin koodin logiikka jättää header- ja footer-osiot huomioitta.

Metabolix [24.04.2012 00:16:42]

#

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();

Sivun alkuun

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta