Kirjautuminen

Haku

Tehtävät

Keskustelu: Nettisivujen teko: Mod Rewrite ja Dynaamiset sivut

Sivun loppuun

Rocceri [03.05.2009 15:23:16]

#

Heippa!

Tuli vastaan pieni muotoinen ongelma. Tein testinä dynaamiset sivut, ja sitten Mod Rewritellä siistin osoitetta:

***index.php
<a href="/index/etusivu/">Etusivu</a> | <a href="/index/uutiset/">Uutiset</a><br>
<?php
if(!isset($_GET["sivu"])) { $sivu = "etusivu"; }
else { $sivu = $_GET["sivu"]; }
if(!file_exists($sivu . ".php")) { $sivu = "error"; }
include($sivu . ".php");
?>

***etusivu.php
Etusivu
***uutiset.php
Uutiset

***.htaccess
# Käynnistää Rewrite enginen. Tämä täytyy kirjoittaa aina ennen Rewrite -sääntöjä.
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)/$ /index\.php?sivu=$1[L]

Ongelma on se, että jos menee http://osoitteeni.fi/index/uutiset/ koodi printtaa etusivu.php:n sisällön.
Uskoisin, että tuossa index.php:n PHP koodissa on se vika. Olenko oikeassa?

Jos laittaa osoitteeksi http://osoitteeni.fi/etusivu/ tai http://osoitteeni.fi/uutiset/, toimii, mutta tietenkään ei tule index.php:n tekstejä.

Andu [03.05.2009 19:42:58]

#

Etusivulla $_GET["sivu"] näyttää sisältävän merkkijonon "etusivu[L]". htaccesin [L] tulee siis osoitteeseen mukaan, koska sitä ennen ei ole välilyöntiä. Tuossa tilanteessa tosin ei tarvitse koko [L]:ää.

Edit: Siinä ei ollutkaan koko ongelma. Tappelin itsekin tämän kanssa pari päivää sitten. Lisää .htaccesiin rivi "Options -MultiViews", jolloin http://osoitteeni.fi/uutiset/ ei menekään suoraan sivulle http://osoitteeni.fi/uutiset.php vaan menee htaccesin kautta index.php sivulle.

Jos on siis tarkoitus, että osoite on muotoa http://osoitteeni.fi/etusivu/ eikä http://osoitteeni.fi/index/etusivu/ niin linkitkit ovat muotoa "/etusivu/"

Rocceri [03.05.2009 20:52:44]

#

Aij:

# Käynnistää Rewrite enginen. Tämä täytyy kirjoittaa aina ennen Rewrite -sääntöjä.
RewriteEngine on
Options +FollowSymlinks
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)/$ /index\.php?sivu=$1
Options -MultiViews

Ei toimi vieläkään, jos laitan osoitteeksi esim. http://osoitteeni.fi/uutiset/

Andu [03.05.2009 21:02:10]

#

Kokeiles tämmöistä:

RewriteEngine on
Options +FollowSymlinks
Options -MultiViews
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)/$ /index\.php?sivu=$1
RewriteRule ^([a-zA-Z0-9]+)$ /index\.php?sivu=$1 [L]

Edellinen ohjasi vain sivun http://osoitteeni.fi/uutiset/ mutta ei sivua http://osoitteeni.fi/uutiset

Rocceri [04.05.2009 08:19:40]

#

Andu kirjoitti:

Kokeiles tämmöistä: ...

Ei toimi vieläkään, :/ Mistäköhän johtuu? :O

janijohannes [04.05.2009 16:27:58]

#

Seuraava toimii:

RewriteEngine on
Options -MultiViews
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)/$ index\.php?1&sivu=$1
RewriteRule ^([a-zA-Z0-9]+)$ index\.php?1&sivu=$1 [L]

Todennus: http://janijohannes.hirmu.net/tavaraa/testit/Rocceri/hehee

Siinä oli ylimääräinen kautta-viiva säännöissä.

Rocceri [04.05.2009 17:03:25]

#

janijohannes kirjoitti:

Seuraava toimii:

RewriteEngine on
Options -MultiViews
RewriteBase /
RewriteRule ^([a-zA-Z0-9]+)/$ index\.php?1&sivu=$1
RewriteRule ^([a-zA-Z0-9]+)$ index\.php?1&sivu=$1 [L]

Todennus: http://janijohannes.hirmu.net/tavaraa/testit/Rocceri/hehee

Siinä oli ylimääräinen kautta-viiva säännöissä.

Nämä kaikki muutkin ovat toimineet jos sivu on jotain.jotain, mutta jos onkin jotain.php?sivu=jotain, niin tämä ei toimikkaan.

janijohannes [04.05.2009 17:25:09]

#

No siinä tapauksessa lisää heti RewriteBase:n seuraavalle riville:

RewriteRule \? \# #Tai minkä haluatkaan
RewriteRule \& \@ #Tai minkä haluatkaan
RewriteRule ^([a-zA-Z0-9\#\@]+)/$ index\.php?1&sivu=$1
RewriteRule ^([a-zA-Z0-9\#\@]+)$ index\.php?1&sivu=$1 [L]

Ja sitten PHP:ssä korvaat takaisin.

Rocceri [04.05.2009 17:40:13]

#

Oho.. Nyt oon kyllä ollut sekaisin. Mulla on ollut väärä koodi väärässä paikkaa. Kyllä noista kaikki toimii, mutta oon kirjoittanut väärin. :D

Rocceri [05.05.2009 18:56:57]

#

Vielä sen verran, että jos onkin kansio kyseessä. Mitä silloin pitäisi tehdä? :D
Jos on kansio test ja menee http://osoitteeni.fi/test niin se etsii test.php tiedostoa. Sama jos on http://osoitteeni.fi/test/ Pitäisikö tuo

RewriteRule ^([a-zA-Z0-9\#\@]+)$ index\.php?1&sivu=$1 [L]

poistaa koodista?

EDIT: Jotta kansioon pääse, pitää olla esim. http://osoitteeni.fi/test/tiedoston_nimi. Pelkkä kansion nimi ei riitä

janijohannes [05.05.2009 19:21:42]

#

Hmm... Helpointa taitaa olla poistaa seuraava:

RewriteRule ^([a-zA-Z0-9\#\@]+)/$ index\.php?1&sivu=$1

Sivun alkuun

Vastaus

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

Tietoa sivustosta