Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Siisti URL rewrite-enginellä

Sivun loppuun

carter [09.02.2012 15:34:28]

#

Hei,

Tartteisin pikkuisen helppiä. Haluaisin urlit toimivan tässä muodossa:

http://osoite.fi/alasivu/

joka saisi tuloksena php-sivun:

http://osoite.fi/index.php?p=alasivu

Eli tässä alasivun tunniste olisi muuttujassa p. Olen saanut yllä olevan toimimaan lisäämällä seuraavan koodin .htaccess tiedostoon:

RewriteEngine on

RewriteRule ^((\w+)?+)/$ index.php?p=$1

Ongelmaksi on nyt muodostunut se, että alasivu muuttuja tulisi voida sisältää myös väliviivan "-" ja pisteen ".". Yllä oleva rewriterule ei toimi enää näillä.

Eli tämännäköinen urli ei toimi:

http://osoite.fi/ala-sivu/
http://osoite.fi/ala.sivu/

Minkälaisen regular expression pätkän minun tulisi laittaa tuon ((\w+)?+)/ tilalle, jotta saisin myös nuo toimimaan.

Kiitos avusta.

-tossu- [09.02.2012 15:43:51]

#

Laita RegExpiksi

^([a-z\-\.]+)/?$

Viimeinen kauttaviiva kannattaa tehdä valinnaiseksi kysymysmerkillä.

carter [09.02.2012 15:50:13]

#

Kiitos vastauksesta. Nyt osoitteet viivalla ja pisteellä toimivat, mutta muuttuja p sisältää vain arvon "index.php" jostain syystä.

-tossu- [09.02.2012 16:01:07]

#

Lisää seuraava RewriteRulen yläpuolelle.

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

carter [09.02.2012 16:45:40]

#

Kiitos avusta. Nyt toimii juuri niin kuin pitääkin.

carter [10.02.2012 19:59:14]

#

Lisäkysymys: Millaisella regeksillä saisi tuohon semmoisen lisäyksen, että rewriterule ei toimi tietyn nimiselle alasivulle?

-tossu- [10.02.2012 20:19:33]

#

Seuraavalla RewriteCondilla RewriteRule ei toimi sivulle foobar.

RewriteCond %{REQUEST_URI} !^/foobar/?$

carter [10.02.2012 20:21:15]

#

Kiitos taasen.

carter [12.02.2012 22:22:22]

#

Lisäkysymys 2: Miten saan alasivut, joissa on ääkkönen toimimaan?

Esim:

http://osoite.fi/ää.kk-önen

-tossu- [12.02.2012 23:05:33]

#

^([a-z\-\.äö]+)/?$

Sivun alkuun

Vastaus

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

Tietoa sivustosta