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.
Laita RegExpiksi
^([a-z\-\.]+)/?$
Viimeinen kauttaviiva kannattaa tehdä valinnaiseksi kysymysmerkillä.
Kiitos vastauksesta. Nyt osoitteet viivalla ja pisteellä toimivat, mutta muuttuja p sisältää vain arvon "index.php" jostain syystä.
Lisää seuraava RewriteRulen yläpuolelle.
RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d
Kiitos avusta. Nyt toimii juuri niin kuin pitääkin.
Lisäkysymys: Millaisella regeksillä saisi tuohon semmoisen lisäyksen, että rewriterule ei toimi tietyn nimiselle alasivulle?
Seuraavalla RewriteCondilla RewriteRule ei toimi sivulle foobar.
RewriteCond %{REQUEST_URI} !^/foobar/?$
Kiitos taasen.
Lisäkysymys 2: Miten saan alasivut, joissa on ääkkönen toimimaan?
Esim:
http://osoite.fi/ää.kk-önen
^([a-z\-\.äö]+)/?$
Aihe on jo aika vanha, joten et voi enää vastata siihen.