Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: htaccess Rewrite

Sivun loppuun

Zirp [05.09.2011 16:26:47]

#

Miten tässä saa myös tuon rodut11.php:n selkokieliset osoitteet toimimaan? Nyt tämä ottaa huomioon vain ylimmän, olivatpa nämä kummin päin tahansa.

Options +FollowSymLinks
RewriteEngine on
RewriteRule ^([a-zA-Z0-9^/-]+)$ index11\.php?url=$1
RewriteRule ^([a-zA-Z0-9^/-]+)$ rodut11\.php?url=$1

Yucca [05.09.2011 17:03:34]

#

Eikös sinulla ole tuossa sellainen sääntö, joka muuntaa tiettyä hahmoa vastaavat osoitteet. Ja sitten on toinen sääntö, jossa on täsmälleen sama hahmo, joten sen käsiteltäväksi ei jää mitään.

Teuro [05.09.2011 17:27:54]

#

Pitääkö säännön siis tunnistaa osoite, joka on muotoa http://www.osoite.fi/parametri1/parametri2 Tästä siis tulisi esimerkiksi scriptille muuttujat url=parametri1 ja url=parametri2? Tämä on mahdotonta, koska ei voi olla kahta samannimistä $_GET muuttujaa.

Metabolix [05.09.2011 17:33:27]

#

Vikana on varmaankin sellainen outo luulo, että säännöt muuttaisivat jotenkin maagisesti vain selaimessa näkyvää osoitetta. Näin ei tietenkään ole, vaan selain uskoo asiaansa täysin ja säännöt muuttavat sitä, miten palvelin käsittelee osoitteita. Palvelin ei voi mistään tietää, kuuluuko jokin tietty sana index11.php:lle vai rodut11.php:lle, vaan se käsittelee säännöt järjestyksessä ja ottaa ensimmäisen, joka tilanteeseen sopii.

Voit kyllä ohjata kaikki osoitteet samaan tiedostoon ja erotella ne sitten PHP-koodin ja includen voimin.

if ($_GET["url"] == "kissa") {
  include("rodut11.php");
} else {
  include("index11.php");
}

Muuten, mitähän yrität tunnistaa tuolla merkkiryhmällä a-zA-Z0-9^/-? Jotenkin herää epäilys, että sinulle sopisi paremmin joko a-zA-Z0-9 tai ^/- (eli kaikki paitsi / ja -).

Zirp [06.09.2011 12:07:30]

#

Eli enkö voi kirjoittaa mitään sääntöä htaccessiin, että jos index11.php
niin tämä sääntö: RewriteRule ^([a-zA-Z0-9^/-]+)$ index11\.php?url=$1
ja jos rodut11.php niin tämä sääntö voimassa: RewriteRule ^([a-zA-Z0-9^/-]+)$ rodut11\.php?url=$1

Teuro [06.09.2011 12:10:30]

#

Mutta ymmärräthän siis sen, että tuon tunnistuksen täytyy jostakin saada selville mitä haluat tehdä. Tällä hetkellä molemmat lauseet osuvat täsmälleen samoihin merkkijonoihin.

Zirp [06.09.2011 12:23:45]

#

www.osoite.fi/index11.php?url=etusivu muotoon www.osoite.fi/etusivu
ja
www.osoiste.fi/rodut11.php?url=kissa muotoon www.osoite.fi/kissa

saan molemmat säännöt toimimaan yksinään, selkokieliset osoiterivit siis. mutta se tarkistus htaccessilla ollaanko kummassa php-sivulla niin sitä en osaa tehdä, enkä tiedä voiko sitä htaccessiin kirjoittakaan.

Teuro [06.09.2011 12:48:17]

#

Teet asian aivan väärin päin. Sinun tulee osoiteriville kirjoittaa osoite.fi/etusivu, jolloin scriptisi käsittelee asian (sopivalla säännöllä) oikein. Toiseen taasen tarvinnet toisen parametrin avuksi. Siis osoite.fi/rodut/kissa, joka muuttuu sisäisesti esimerkiksi tällaiseksi osoite.fi?rodut=kissa

Metabolix [06.09.2011 15:36:06]

#

Kun näköjään pidemmät vastaukset eivät kelpaa, tiivistetään: Ei voi tehdä kahta aivan samanlaista ohjausta.

Macro [06.09.2011 15:54:18]

#

Seuraavalla pätkällä www.sivu.fi/sivu/x vastaa www.sivu.fi/sivu.php?s=x osoitetta.

RewriteEngine on
RewriteRule ^sivu/([^/\.]+)/?$ sivu.php?s=$1 [L]

Sivun alkuun

Vastaus

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

Tietoa sivustosta