Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: RewriteRule ongelma

Sivun loppuun

dartvaneri [07.02.2012 21:35:08]

#

Elikkäs, mulla on sivu jossa on sitten oppaita,yms, siinä on linkki lista, jossa on sitten linkki 'Oppaat'. No siitä kun klikkaa niin aukee sen 'Oppaat' linkin alle alalinkkejä. No nyt kun klikkaa auki jonkin alalinkin, se menee osoitteeseen /Oppaat/Muut niin kuin pitääkin, okei se hakee ko tiedoston sisällön siihen content divin sisään, MUTTA nyt käy niin, että lähes kaikki ulkoasusta lähtee mäkeen. Noh kun nyt painan linkki listasta jotain linkkiä, vaikka 'Projektit', niin eipä menekkään osoitteeseen '/Projektit' vaan meneekin virheelliseen osoitteeseen '/Oppaat/Projektit', kyllä se näinkin löytää sen oikeen sisällön sinne, mutta osoite on väärin, eikä ulkoasua liiemmin ole enää. Tai siis ulkoasusta katoaa vain 'Kuvat'-kansiossa olevat kuvat.
Eli missä on syy? Ja mitenkäs mää sen voin korjata?

Vähän koodia:

Normaali linkki:
<li class="li"><a href="Galleria">Galleria</a></li>
Oppaat linkin alavalikossa oleva Muut linkki:
<li class="sisalista2"><a href="Oppaat/Muut">Muut</a></li>

.htaccess tiedoston sisältöä:

    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ index.php?sivu=$1 [QSA,L]
    RewriteRule ^Oppaat/(.*)$ index.php?sivu=Oppaat&kategoria=$1 [QSA,L]

Ps. on varmaan vähän epäselvää tekstiä, mutta yrittäkää saada tolkkua.

-tossu- [07.02.2012 22:47:53]

#

Aloita linkin osoite kauttaviivalla, jolloin se on suhteessa osoitteen juureen.

<li class="li"><a href="/Galleria">Galleria</a></li>

Samalla tavalla saat myös kuvat toimimaan.

En ole mod_rewrite-guru, mutta mielestäni jälkimmäinen RewriteRule ei toimi, sillä ensimmäinen sääntö kattaa kaikki osoitteet ja lopettaa sääntöjen käsittelyn. Ilmeisesti koodi kuitenkin toimii halutulla tavalla.

dartvaneri [07.02.2012 22:51:23]

#

Kiitos vastauksesta. Tuo korjasi nytten ton linkki ongelman, muttajostain syystä vielä kuvat ovat hukassa.

Edit. Sainkin korjattua kuva ongelman, kun lisäsin css-tiedostossa /-viivan 'kuvat' sanan eteen.

		background-image: url('/kuvat/body2.png');

Edit2. Seuraava ongelma on, että kun aukaise tuon 'muut' sivun 'oppaat' alivalikosta, niin nyt haluan tietää tämä sivun(sivu=Oppaat) sisällön, kun nyt tulostan sen, se antaa mulle tuloksen: Oppaat/Muut , kun haluaisin sen näyttävän vain ton 'Oppaat'. Pitääkö mun tehdä purkka viritys, ja pregeillä katkaista tosta /-merkin kohdalta, vai onko jokin, joka on väärin tuossa RewriteRulessa, tai jokin, jota muuttaa?

<a href="Oppaat/Muut">Muut</a>

-tossu- [07.02.2012 23:19:06]

#

Vaihda RewriteRulejen paikkaa, niin ne toimivat kuten haluat. Tietysti voit myös katkaista osoitteen PHP:llä, ja silloin vältyt RegExp-viritykseltä käyttämällä explode-funktiota.

list ($sivu, $kategoria) = explode ("/", $osoite);

Itse hoitaisin homman PHP:llä niin, ettei osoitteita tarvitsisi missään vaiheessa edes katkaista, jolloin ei myöskään tarvitsisi päivittää RewriteRuleja, mikäli sivuja tulee lisää.

dartvaneri [07.02.2012 23:49:51]

#

Noh nyt toimii linkit niinku pittääki, mutta kun nyt ei sitten nuo kuvat näy ollenkaan.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^Oppaat/(.*)$ index.php?sivu=Oppaat&kategoria=$1 [QSA,L]
RewriteRule ^Vinkkeja/(.*)$ index.php?sivu=Vinkkeja&kategoria=$1 [QSA,L]
RewriteRule ^Projektit/(.*)$ index.php?sivu=Projektit&kategoria=$1 [QSA,L]
RewriteRule ^Muuta/(.*)$ index.php?sivu=Muuta&kategoria=$1 [QSA,L]
RewriteRule ^(.*)$ index.php?sivu=$1 [QSA,L]

css:

background-image: url('/kuvat/body2.png');

Mod. vaihtoi oikeat kooditagit!

Niko [08.02.2012 01:16:30]

#

dartvaneri kirjoitti:

Noh nyt toimii linkit niinku pittääki, mutta kun nyt ei sitten nuo kuvat näy ollenkaan.

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

Tossa kirjoitat kaikki index.php:hen. RewriteCond vaikuttaa vain seuraavaan sääntöön.

dartvaneri [08.02.2012 16:23:52]

#

Eli? Mikä siis on vika?
Edit. Osaaki joku vastata kysymyksiini, ja myös siihen miten saan kuvat takaisin?

Metabolix [08.02.2012 21:58:01]

#

Juurihan Niko vastasi: RewriteCond vaikuttaa aina vain seuraavaan sääntöön, joten tässä ehdot eivät vaikuta ollenkaan tuohon viimeiseen sääntöön, jolloin aivan kaikki (oikeat ja väärät) tiedostonimet ohjataan index.php:lle. Laita oikeat RewriteCond-rivit oikeaan paikkaan (tarvittaessa moneen kertaan), niin koodisi pitäisi toimia.

Toinen vaihtoehto olisi varmaan vaihtaa säännöllistä lauseketta niin, että se ohittaa /-merkilliset nimet.

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

dartvaneri [08.02.2012 22:00:35]

#

Ahaa, okei, kokeilin laiittaa voita RewriteCondeja jo aiemin useaan kertaan, mutta jostain syystä ne eivät silloin toimineet, mutta nyt toimii, kiitos.


Sivun alkuun

Vastaus

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

Tietoa sivustosta