Moi.
Minulla on ongelma jonka ratkaisemiseen mun oma aivokapasiteettini ei riitä.
Tämä ongelma tuli tehtyä vahingossa ja pienen epähuomion saattelemana.
Elikäs, firmastamme lähetettiin esitekirjeitä moneen sataan yritykseen ja jokaisessa esitekirjeessä lukee osoite http://www.xxxosoite.com/OsaKirjaiMistaIsolla .
Kysymys kuuluukin, kuinka saan tehtyä edelleenohjauksen joka molemmilla tavoilla, osa isoilla- tai kaikki pienilläkirjaimilla kirjoitettuna ohjautuu samalle sivulle.
Ymmärsiköhän kukaan kysymystäni :D
Elikkäs osoitteen isoilla ja pienillä kirjaimilla ei pitäisi olla väliä?
juurikin niin. Ihan sama millä tapaa sen voi ohittaa, että kummalla kirjoutustavalla tahansa selain menee samaan paikkaan nyt vaan tarvii ratkaisun :)
Teet edelleenohjauksen vaikka isoilla kirjoitetusta pienellä kirjoitettuun.
OsaKirjaiMistaIsolla -sivun koodi:
<?php header("location: http://www.xxxosoite.com/osakirjaimistaisolla"); ?>
Tai päivität palvelimen Windows-käyttikselle, niin kirjainkoolla ei automaattisesti ole väliä :D
JTS: Ehdotuksesi on sama jota pidin itsestään selvyytenä jo aiemmin, kunnes tajusin, että en voi sivuston juurihakemistoon tehdä EsImErkki ja esimerkki kansioita. Tulee valitusta, että saman niminen hakemisto on jo tehty jnejnejne.
Grez: Sun ehdotuksesi on muuten hyvä ja mietin tuota itsekkin, mutta en välttämättä pääse muuttelemaan saunalahden palvelimien asetuksia.
Kyllä ne UNIXissa voi tehdä. Mahtaako virhe edes tulla palvelimen puolesta, vai onko käytämäsi ohjelma vain turhan nokkela?
Saisiko tuon .htaccess-tiedostolla hoidettua?
Kaikennäköistä olen miettinyt mutta enpä tiedä. Jotain olisi pakko keksiä pian. Ei tuo ongelma mistään ohjelmista ole kiinni, siitä vaan että suurimmalle osalle noista webpalvelimista on absoluuttista kirjoittaa hakemisto oikeilla kirjainkoolla.
.htaccesilla pitäis onnistua suurinpiirtein näin:
RewriteEngine On RewriteCond %{REQUEST_URI} /OsaKirjaiMistaIsolla$ [NC] RewriteRule . /oikeaosoite
[NC]-optio tarkoittaa No Case
Itse kyllä huolehtisin, että ihan kaikki palvelimella olevat tiedostot ja hakemistot on pienellä ja sitten laittaisin seuraavan .htaccessin
RewriteEngine On RewriteMap lc int:tolower RewriteCond %{REQUEST_URI} [A-Z] RewriteRule (.*) ${lc:$1} [R=301,L]
EDIT: Grezin viestiä ei ollut, vastatessani.
Suosittelen AJV:n ratkaisua.
Toinen vaihtoehto, sinulla itselläsi on windows ja saunalahdella kait linux.
Tee JTS:n ehdotus, mutta luo ensin joku tiedosto johon tallennat tuon
header... siirrä se palvelimelle ja uudelleeen nimeä se vasta siellä
OsaKirjaiMistaIsolla nimiseksi.
Niin, no mun mielestä toi mun ratkaisu jolla se hoituu samalla vaivalla kaikille tiedostoille olisi kätevämpi.
RewriteMap ei vaan taida olla .htaccess-direktiivi, pitäis päästä käpristelemään httpd.conffia.
Oho, enpä tarkistanut tuota, että voiko käyttää .htaccessissa. Jos tosiaan on noin (eikä palveluntarjoaja ole ystävällisesti laittanut tuollaista rewritemapia tarjolle) niin sitten tietty ei auta kuin määritellä jokaiselle halutulle tiedostolle erikseen tuolla ajv:n tavalla.
Hmm. Pytynkö muka muuttamaan saunalahden palvelimella olevaa .htacces tiedostoa? Tuo Grezin ehdotus kuulostaa parhaalta, koska se koskisi sitten kaikkia sivuja ja hakemistoja ja ei olisi väliä niiden kirjoitusasulla.
Jos pystyy muuttamaan niin sen jälkeenhän ei ongelmaa olekkaan.
EDIT: Pystyykö tuolla ajv:n tavalla osoittamaan tuon asian myös hakemistolle. Koska kyseessä on hakemisto joka on urlissa sekasikiö kirjaimilla eikä tiedosto.
No siis .htaccesshan on tiedosto siinä missä muutkin ja se on siellä web-hakemistossa, eli tuntuisi kummalta jos et pysty muuttamaan. (Paitsi tietty jos on kyseessä joku erikoisella käyttöliittymällä varustettu palvelu, esim. kuva-albumi, jossa ei voi itse hypistellä tiedostoja suoraan.) Toki sen käytön voisi erikseen estää, mutta se olisi vähän outoa. Sitten voisi harkita palveluntarjoajan vaihtoa.
Ongelmaksi tuossa ehdottamassani ratkaisussa ilmeisesti vaan tulee tuo RewriteMap joka ei toimi .htaccessissa :(, eli jos ihan palvelimen asetuksissa ei ole tehty tuollaista lowercaseusta tarjolle, niin sitten se ei onnistune (joku ehkä kertoo jos onnistuu jollain muulla tavalla)
Testaanpas tuota ajv:n versiota asiasta toimisiko tää homma niin.
EDIT: Lisäsin tuon ajv:n kertoman pätkän .htaccessiin ja mitään viittaavaakaan siihen ei tapahtunut mitä tuon pitäisi tehdä. voe harmi
Yksi vaihtoehto voisi olla sellainen, jossa kaikki jolla ei ole oikeadomain referissä (istunto tai eväste) ohjataan jollekin sivulle jossa on linkit sivuille. Eli tulkoot mistä tahansa niin aloitus tapahtuu etusivulta.
Pelkän referin varaan en suosittele, istunto on paras.
Niin, tuli tässä vielä mieleen, että tuonhan voisi toteuttaa niin, että kaikki isoja kirjaimia sisältävät rewritetaan vaikka php-skriptiin, joka sitten tekee uudelleenohjauksen pienillä kirjaimilla olevaan vastineeseen.
Eli
.htaccess
RewriteEngine On RewriteCond %{REQUEST_URI} [A-Z] RewriteRule (.*) ISOJA.PHP
ISOJA.PHP
<?php header('location:' . strtolower($_SERVER['REDIRECT_SCRIPT_URI'])); ?>
Toimintaa voi testata seuraavilla
http://grez.info/putka/jussspe/TeStI.hTmL
http://grez.info/putka/jussspe/JoPaS/JoO.hTmL
Eli palvelimella on oikeasti testi.html ja jopas hakemistossa joo.html
Ja siis toi .htaccess on tuolla jussspe hakemistossa, eli putka ja jussspe pitää kirjoittaa pienellä, mutta niiden jälkeen voi sitten laittaa sekokokoisia merkkejä. Ja tuo siis hanskaa kaikki tiedostot ja alihakemistot automaattisesti.
Joo mä sain ton homman yksinkertasemmin jo pelittään :)! kiitos kuitenkin.
Sainkin kun sainkin palvelimelle tehtyä kaksi muuten samannimistä hakemistoa mutta eri kirjainkoilla . Jotenka nyt se on ihan sama kirjoittaaki asiakas hakemiston esitteen kirjainkoolla vai yksinkertasesti vain pienellä.
En tiedä nettisivukoodauksesta mitään, mutta eikö toimisi jos koodi muuntaa kaikki nimet isoiksi kirjaimiksi ? Vai onko tämä mahdollista vain tietokoneelle tehdyissä ohjelmissa/windowsissa ?
rautamiekka kirjoitti:
En tiedä nettisivukoodauksesta mitään, mutta eikö toimisi jos koodi muuntaa kaikki nimet isoiksi kirjaimiksi ?
Toimiihan se, mutta serverin koodiin ei välttämättä voi koskea.
Aihe on jo aika vanha, joten et voi enää vastata siihen.