Keskustelu


Aloita uusi ketju Vastaa viestiin  [ 13 viestiä ] 
 WWW-sivujen osotteet siistiksi 
Kirjoittaja Viesti
Minecraft-moderaattori

Liittynyt: 7.4.2008 14:55
Viesti WWW-sivujen osotteet siistiksi
Taso: Helpohko (Perusasiat tulisi tietää!)

Inhottaako, kun käytät dynaamista sivujärjestelmää, rumat ja mahdollisesti pitkät osoitteet? No, siihen on ratkaisu, helppo sellainen.

Osa 1

Teet tiedoston .htaccess ja mitä sinne kirjoitetaan tulee tässä:
Lainaa:
RewriteEngine On
RewriteBase /

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?sivu=$1 [NC]

Tässä kohtaa pitää huomoida RewriteBase ensimmäiseksi. Jos sinulla on tunnus jostakin, esim. jouluserveriltä tai servut.uksesta niin pelkkä / ei riitä, vaan siinä pitää olla /TUNNUKSESI/ jotta se toimii.

Toisena asiana pitää huomoida paksunnettu kohta koodista. Jos olet tehnyt sen oppaan alussa linkitetyn oppaan mukaan niin sitä ei tarvitse muuttaa, mutta jos olet sen muuttanut esim. englanninkieliseksi jolloin se olisi "page" niin silloin se pitää vaihtaa.

Osa 2

Sitten osa 2. Tässä käsitellään "monimutkaisemmat" dynaamisen järjestelmän osotteet siistiksi. Oletetaan että sinulla on oppaat -osio, jossa olisi osoite ennen ollut index.php?sivu=oppaat&opas={oppaan_nimi} ja haluat sen siistiksi osoitteeksi: /oppaat/{oppaan_nimi}/. Se tapahtuu siis näin:

Kirjoitetaan alla oleva koodi edellisen Rewrite Rule;n alle:
Lainaa:
RewriteRule ^([a-zA-Z0-9_-]+)/[a-zA-Z0-9_-]+)/?$ index.php?sivu=$1&opas=$2 [NC]

Samat jutut huomioidaan kuin ylemässäkin eli paksunnetut kohdat. Jos kyse ei ole oppaista, vaan esim. arvosteluista ja "dynaaminen osoite" on ollut index.php?sivu=arvostelut&arvostelu={arvostelu} niin opas tilalle tulee arvostelu.

Jos kysyttävää niin kysykää! (;

Troubleshooting

Jos tunnuksella tai palvelimella on eri sivuja tai esim. keskustelu foorumi ja siellä ei sivut toimi niinkuin pitäisi, koska nk. pääsivulla on tämä käytössä niin sen saa korjattua näin:
Teet .htaccess tiedoston kansioon jossa lukee:
Lainaa:
RewriteEngine Off

Jos tulee Internal Server Error viestiä sivuille mentäessä niin kokeile seuraavaa:

- Lisää johonkin kohtaa .htaccess tiedosto rivi
Koodi:
Options -MultiViews

- Varmista, että et ole typottanut mitään.

- Varmista, että .htaccess tiedostot ovat käytettävissä. Eli Apache 2:n VirtualHost konfiguraatiossa on AllowOverride All

- Apacheen on asennettu mod rewrite (roottina a2enmod rewrite). (Lisätty 22.1.2013)


Viimeksi muokannut Tumpo päivämäärä 22.1.2013 23:20, muokattu yhteensä 4 kertaa
17.6.2008 15:44
Profiili WWW
Avatar

Liittynyt: 13.1.2008 14:02
Viesti Re: WWW-sivujen osotteet siistiksi
Missä muodossa tuon htaccessin pitää olla?

_________________
Kuva

17.6.2008 19:57
Profiili
Minecraft-moderaattori

Liittynyt: 7.4.2008 14:55
Viesti Re: WWW-sivujen osotteet siistiksi
Ihan vain .htaccess

Jos kirjoitat esim. muostiolla niin tallennat sen vain lainausmerkeissä:
Lainaa:
".htaccess"

17.6.2008 20:06
Profiili WWW

Liittynyt: 4.12.2009 16:30
Viesti Re: WWW-sivujen osotteet siistiksi
Sain ekan osan toimimaan täydellisesti, mutta toinen ei toimi millään. Saan vaan virheilmoituksen:

Lainaa:
Internal Server Error

The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, (...) and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 500 Internal Server Error error was encountered while trying to use an ErrorDocument to handle the request.
Apache/2.2.14 (Unix) mod_ssl/2.2.14 OpenSSL/0.9.8e-fips-rhel5 mod_auth_passthrough/2.1 mod_bwlimited/1.4 FrontPage/5.0.2.2635 mod_jk/1.2.28 mod_perl/2.0.4 Perl/v5.8.8 Server at (...) Port 80


.htaccess-tiedostossa lukee seuraavasti:

Koodi:
RewriteEngine On
RewriteBase /

RewriteRule ^([a-z]+)/?$ ?id=$1
RewriteRule ^([a-zöäå_-]+)/[a-zöäå_-]+)/?$ ?id=$1&uutinen=$2 [NC]


Osoitteet ovat muotoa:

/?id={sivunnimi}&uutinen={uutisennimi}

4.1.2010 18:24
Profiili
Minecraft-moderaattori

Liittynyt: 7.4.2008 14:55
Viesti Re: WWW-sivujen osotteet siistiksi
Sulla on alemmassa rulessa typo.

Koodi:
RewriteRule ^([a-zöäå_-]+)/([a-zöäå_-]+)/?$ ?id=$1&uutinen=$2 [NC]

4.1.2010 19:34
Profiili WWW
Minecraft-moderaattori

Liittynyt: 7.4.2008 14:55
Viesti Re: WWW-sivujen osotteet siistiksi
Tulipahan tätäkin opasta päivitettyä.

Muutoksia:

Paransin RewriteRuleja ja lisäsin troubleshooting -osion, jonka kohtien pitäisi auttaa 90% tapauksista jollon osotteiden siistiminen ei muka toimi.

1.2.2011 16:57
Profiili WWW

Liittynyt: 4.3.2011 14:12
Viesti Re: WWW-sivujen osotteet siistiksi
Miten sais niin ettei menis ihan sekasin kun laittaa osoitteen perään / eli esim. osoite.com/etusivu/

Menee ihan oudoks, yrittää ottaa tyyli.css tiedostoo etusivu nimisestä alihakemistosta, mutta kuitenkin näyttää index.php päähakemistosta. Sitten kun painaa jotain linkkiä niin yrittää mennä osoite.com/etusivu/?sivu=sivu1

4.3.2011 18:47
Profiili
Minecraft-moderaattori

Liittynyt: 7.4.2008 14:55
Viesti Re: WWW-sivujen osotteet siistiksi
Laita siihen linkin eteen / tai koko url, jotta se ei yritä mennä ../etusivu/?sivu=sivu1.

Jos käytät jotain ilmaista sivutilaa ja siellä on käytössä ~tunnus, niin laita /~tunnus/ siihen eteen.

4.3.2011 19:40
Profiili WWW

Liittynyt: 4.3.2011 14:12
Viesti Re: WWW-sivujen osotteet siistiksi
index.php

<a href="etusivu">ETUSIVU</a> | <a href="info">INFO</a>

<?php
if(!isset($_GET["sivu"])) { $sivu = "etusivu"; }
else { $sivu = $_GET["sivu"]; }
if(!file_exists($sivu . ".php")) { $sivu = "error"; }
include($sivu . ".php");
?>

.htaccess

RewriteEngine On
RewriteBase /

RewriteRule ^([a-zA-Z0-9_-]+)/?$ index.php?sivu=$1 [NC]
--------------

Mul on siis nyt sivu noin ja jos meen osote.com/etusivu/ nii se hakee kyl ton index.php ja siihen etusivu.php mut sit esim css-tiedostoa se ei hae osote.com osotteesta vaan osote.com/etusivu/ hakemistosta. Ja jos klikkaan info linkkiä niin se menee osoite.com/etusivu/info

Tietty voisin muuttaa kaikki osotteet ../style.css ../info ym. mutta kai siihen joku parempikin ratkaisu löytyy? Onkohan mun koodissa joku vika?

EDIT: Niin siis kyl toi toimii muuten ihan oikein, mutta haluisin vaan et toimis myös jos perässä on toi /

10.3.2011 20:38
Profiili
Minecraft-moderaattori

Liittynyt: 7.4.2008 14:55
Viesti Re: WWW-sivujen osotteet siistiksi
Toimii, jos laitat niihin CSS linkityksiin ja muiden eteen sen /-merkin. Linkkeihin sama. Se on ihan siitä kiinni.

10.3.2011 21:23
Profiili WWW

Liittynyt: 20.2.2012 01:06
Viesti Re: WWW-sivujen osotteet siistiksi
Tarvitsisin vielä apua tämän koodin kanssa.

Mulla on käytössä dynaaminen sivujärjestelmä, joka on mainittu aloittajan viestissä. Mulla on myös nämä siistimmät www-osoitteet -osa I- käytössä. Linkitys toimii moitteettomasti. Ainoa ongelma on "error" sivun kanssa. Jos laitan linkin muotoa index.php?sivu=(sivu jota ei ole), ohjaa koodi automaattisesti sivulle error.php. Jos käytän htaccessin RewriteEngineä, eli www.sivut.fi/(sivu jota ei ole), ei error.php tule näkyviin, vaan palvelimen oma error sivu, joka ei kuitenkaan ole sama mitä palvelimen omassa "error"-hakemistossa pitäisi olla:

Not Found

The requested URL /index.php was not found on this server.

Additionally, a 403 Forbidden error was encountered while trying to use an ErrorDocument to handle the request.

Auttakaa tumpeloa...

20.2.2012 01:12
Profiili
Avatar

Liittynyt: 4.6.2007 17:44
Paikkakunta: Oulu
Viesti Re: WWW-sivujen osotteet siistiksi
Kannattaa mielummin käyttää tätä:
Koodi:
<?php
if(!isset($_GET["sivu"])){$sivu = "etusivu";}
else{$sivu = $_GET["sivu"];}
if(!file_exists($sivu . ".php") || $sivu == 'index'){$sivu = "error";}
include($sivu . ".php");
?>


Lisäsin tuohon tuon || $sivu == 'index' eli sivua ei voi laittaa osoittamaan index.php:ta. Tämä siis estää loputtoman loopin, että indexit olisivat sisäkkäin. :d
En ole perehtynyt .htaccesseihin, mutta tuo jaskan 403 viittaa tiedostojen oikeuksiin. Pena tai Tumpo osaa varmaan auttaa paremmin.

_________________
Kuva

20.2.2012 11:46
Profiili WWW
Minecraft-moderaattori

Liittynyt: 7.4.2008 14:55
Viesti Re: WWW-sivujen osotteet siistiksi
jaska120 kirjoitti:
Tarvitsisin vielä apua tämän koodin kanssa.

Mulla on käytössä dynaaminen sivujärjestelmä, joka on mainittu aloittajan viestissä. Mulla on myös nämä siistimmät www-osoitteet -osa I- käytössä. Linkitys toimii moitteettomasti. Ainoa ongelma on "error" sivun kanssa. Jos laitan linkin muotoa index.php?sivu=(sivu jota ei ole), ohjaa koodi automaattisesti sivulle error.php. Jos käytän htaccessin RewriteEngineä, eli http://www.sivut.fi/(sivu jota ei ole), ei error.php tule näkyviin, vaan palvelimen oma error sivu, joka ei kuitenkaan ole sama mitä palvelimen omassa "error"-hakemistossa pitäisi olla:

Auttakaa tumpeloa...

Itse olen tämän ratkaissut niin että kohdassa missä on $sivu = "error"; niin onkin
Koodi:
echo "<h2>ERROR 404</h2>\n\nHaettue sivua ei löydy palvelimelta.\n";

Toisaalta tuon pitäisi löytyä ihan noinkin, jos se vaan on se tiedosto siellä palvelimella (se error.php).

20.2.2012 12:22
Profiili WWW
Näytä viestit ajalta:  Järjestä  

Aloita uusi ketju Vastaa viestiin  [ 13 viestiä ] 

Käyttäjiä lukemassa tätä aluetta: Ei rekisteröityneitä käyttäjiä ja 0 vierailijaa


Et voi kirjoittaa uusia viestejä
Et voi vastata viestiketjuihin
Et voi muokata omia viestejäsi
Et voi poistaa omia viestejäsi
Et voi lähettää liitetiedostoja.

Etsi tätä:
Hyppää:  
cron
Powered by phpBB © phpBB Group.
Käännös, Lurttinen, www.phpbbsuomi.com
Copyright © 2003-2025 Jesse Hakanen | Linkitä | IRC