Miten saisin ohjattua nettisivun kävijät alikansiosta hakemiston juureen?
Esim. www.omadomain.com/testi --> www.omadomain.com
Google on indeksoinut hyvin aiemmat sivut ja näiltä sivuilta pitäisi saada kävijät uudelle sivulle.
Htaccess-koodilla vai miten? Kyseessä on Wordpress-sivusto
Tämä .htaccess-koodi ohjaa koko hakemiston, tiedostoineen ja alihakemistoineen:
Redirect 301 /testi/ /
Esimerkkejä:
/testi/ → / /testi/foo → /foo /testi/bar/baz → /bar/baz
Laitoin koodin htaccess-tiedostoon juurihakemistoon.
Seurasi seuraavaa:
Alkukepäinen: omadomain.com/testi/product_details.php?p=3
---> seuraa omadomain.com/product_details.php?p=3
Alikansio (testi) siis poistuu välistä ja uudelleenohjaus ei toimi.
Mikähän menee pieleen?
Mike74 kirjoitti:
Laitoin koodin htaccess-tiedostoon juurihakemistoon.
Alikansio (testi) siis poistuu välistä ja uudelleenohjaus ei toimi.
Miten uudelleenohjaus ei toimi? Kerro tarkemmin, mitä yrität tehdä.
Mike74 kirjoitti:
Alikansio (testi) siis poistuu välistä ja uudelleenohjaus ei toimi.
Kuulostaa ristiriitaiselta. Jos "testi/" poistuu välistä, eikö silloin uudellenohjaus nimenomaan ole toiminut oikein?
Pitäisi saada mikä tahansa alikansion tiedosto kääntymään juurihakemistoon.
Uudella sivulla ei ole esim product_details.php -nimistä tiedostoa.
Google on indeksoinut esim product_details?c=1.php tai product_catalog -tiedostoja. Nämä pitäisi saada kääntymään myös juurihakemistoon.
Jos et halua, että Google indeksoi nuo, voit ne estää robots.txt tiedostolla.
Tahdotko siis saada jompaa kumpaa seuraavista?
1. omadomain.com/testi/product_details.php?p=3 ohjautuu kohteeseen omadomain.com
2. omadomain.com/testi/product_details.php?p=3 näytää URLina omadomain.com/product_details.php?p=3 mutta hakee tiedot kuitenkin alkuperäisestä URLista
Haluaisin kohdan 1. mukaisen ratkaisun
1. omadomain.com/testi/product_details.php?p=3 ohjautuu kohteeseen omadomain.com
Tämä pitäisi tapahtua kaikkien alikansion "testi" tiedostojen osalta, joita google on indeksoinut
Eikös tämä ole ihan RewriteBase määrityksellä hanskattavissa?
Pitäisi löytyä oletuksena WPn htaccessista, arvolla /.
Tämän pitäisi toimia:
RewriteEngine On RewriteRule ^testi/? / [R=301]
Ratkaisuun käy RewriteRule (kuten HTML5 yllä kertoo). Jos vielä halutaan pudottaa query string eli ?:n jälkeinen osa pois, pitää laittaa kohteeksi ”/?”. Lisäksi L-määre on yleensä paikallaan, jotta uudelleenkirjoitussääntöjen käsittely päättyy.
RewriteEngine On RewriteRule ^testi/ /? [L,R=301]
Koodissani on muuten kysymysmerkki, jotta palvelin tekee vain yhden uudelleenohjauksen vinoviivattomasta osoitteesta /testi. Muuten palvelin ohjaa ensin osoitteeseen /testi/ ja vasta sitten säännön mukaan osoitteeseen /.
Suosittelen käyttämään Matabolixin ratkaisua ja lisäämään lähdeosan loppuun kysymysmerkin.
HTML5 kirjoitti:
Koodissani on muuten kysymysmerkki, jotta palvelin tekee vain yhden uudelleenohjauksen vinoviivattomasta osoitteesta /testi. Muuten palvelin ohjaa ensin osoitteeseen /testi/ ja vasta sitten säännön mukaan osoitteeseen /.
Jos noin tapahtuu, selvästi koodissasi on muu virhe. Kyllä ohjaus menee suoraan sinne, mihin käsketään.
Lähdeosan lopussa olevan kysymysmerkin vaikutus on, että myös muut testi-alkuiset polut ohjautuvat, mm. siis /testi, /testi2 ja /testimuu. Omassa versiossani taas vain /testi/ ja sitä alemmat ohjautuvat.
Eli en suosittele ylimääräistä kysymysmerkkiä lähdeosassa, jos ei ole tarkoitus ohjata muita testi-alkuisia hakemistoja.
Metabolix kirjoitti:
Jos noin tapahtuu, selvästi koodissasi on muu virhe. Kyllä ohjaus menee suoraan sinne, mihin käsketään.
Jos palvelimella on juuressa hakemisto testi, niin osoite /testi ohjautuu osoitteeseen /testi/, joka taas ohjautuu osoitteeseen /. Jos taas hakemistoa ei ole, osoite /testi ei toimi.
Tarkoituksenani oli, että osoite /testi ohjautuu molemmissa tapauksissa suoraan osoitteeseen /.
Metabolix kirjoitti:
Lähdeosan lopussa olevan kysymysmerkin vaikutus on, että myös muut testi-alkuiset polut ohjautuvat
Enpä tullut tuota ajatelleeksi. Lausekkeen olisi pitänyt olla ^testi(/|$)
RewriteEngine On RewriteRule ^testi(/|$) /? [R=301,L]
HTML5 kirjoitti:
Jos palvelimella on juuressa hakemisto testi, niin osoite /testi ohjautuu osoitteeseen /testi/, joka taas ohjautuu osoitteeseen /.
Ahaa, jotenkin ajattelin sinun tarkoittaneen, että kaikki osoitteet (kuten esimerkkinä annettu /testi/product_details.php?p=3) ohjautuisivat ensin osoitteeseen /testi/, mitä ei tietenkään tapahdu. Tietenkin pelkkä /testi toimii, kuten sanoit. Arvelen kuitenkin, että nimenomaisesti osoitteella /testi ei ole tässä kysymyksessä merkitystä, koska sitä tuskin on Googlekaan indeksoinut.
Metabolix kirjoitti:
Arvelen kuitenkin, että nimenomaisesti osoitteella /testi ei ole tässä kysymyksessä merkitystä, koska sitä tuskin on Googlekaan indeksoinut.
Ei varmaan olekaan. Yleensä osoitteet toimivat samalla tavalla, päättyvätpä ne vinoviivaan tai eivät.
Saatetaan myös haluta, ettei kirjainkoolla ole merkitystä, jolloin käytetään NC-lippua.
Suuret kiitokset kaikille asiaa ratkonielle. Homma ratkaistu!
Aihe on jo aika vanha, joten et voi enää vastata siihen.