Skip to content

Kaikki WordPressistä, web-kehityksestä — ja paljon muuta

⚙️ Kuinka poistaa kategoria WordPress-osoitteesta: kaikki toimivat tavat

⚙️ Kuinka poistaa kategoria WordPress-osoitteesta: kaikki toimivat tavat

Osoitteet WordPressissa näyttävät oletuksena tältä: /category/plugins/ tai /category/news/ tai /category/wordpress/. Sana "category" ei merkitse mitään käyttäjille eikä hakukoneille. Se on jäänne, joka vain pidentää osoitetta ja laimentaa sivuston rakennetta.

Ongelma on, ettei WordPress tarjoa yksinkertaista kytkintä tämän etuliitteen poistamiseen tavallisten asetusten kautta. Useimmat sivuston omistajat joko sietävät /category/-osaa tai asentavat ensimmäisen vastaan tulevan lisäosan ymmärtämättä seurauksia. Ja seurauksia voi tulla: rikkinäisiä linkkejä, 404-virheitä vanhoissa osoitteissa, tuplasisältöä hakemistossa.

Tässä on vaiheittainen erittely kaikista toimivista tavoista poistaa /category/ WordPress-osoitteista: yksinkertaisimmasta sisäänrakennetusta keinosta functions.php-tiedostoon lisättävään koodiin. Jokainen menetelmä on testattu nykyisillä WordPress-versioilla, ja mukana on selitykset rajoituksista ja mahdollisista sudenkuopista.

💡 Pikakatsaus:

  • Sisäänrakennettu osoiterakennemekanismi: yksinkertainen pistekikka asetusten kautta, ei lisäosia
  • Remove Category URL -lisäosa: helpoin yhden klikkauksen tapa niille, jotka eivät halua kaivella asetuksia
  • Yoast SEO tai Rank Math: jos sinulla on jo SEO-lisäosa asennettuna, se voi hoitaa kategoriapolun poiston
  • .htaccess: vaihtoehto niille, jotka haluavat manuaalisen hallinnan palvelintasolla
  • Koodi functions.php-tiedostossa: ohjelmallinen tapa ilman lisäosia, täysi hallinta korvauslogiikasta

1. Sisäänrakennetut osoiterakenneasetukset

Tämä on yksinkertaisin tapa, joka ei vaadi minkään lisäosan asentamista. Se hyödyntää WordPressin omaa "Osoiterakenteet"-mekanismia.

Mene hallintapaneeliin ja avaa Asetukset → Osoiterakenteet. Valitse "Yleiset asetukset" -osiosta "Mukautettu rakenne" -vaihtoehto.

Syötä oikealla olevaan kenttään seuraava rakenne:

1/%category%/%postname%/

Nyt tulee tärkeä kohta. Vieritä alas "Kategorian etuliite" -kenttään ja kirjoita piste, .-merkki (ilman lainausmerkkejä). Tämä on epätavallinen mutta toimiva kikka: WordPress tulkitsee pisteen tyhjäksi etuliitteeksi ja lakkaa lisäämästä /category/-osaa kategoriaosoitteisiin.

Mukautetut permalinkkirakenteen asetukset

Klikkaa "Tallenna muutokset". Valmista, kategoriaosoitteesi näyttävät nyt tältä: site.com/wordpress/ entisen site.com/category/wordpress/ sijaan.

⚠️ Tärkeä huomio: älä jätä "Kategorian etuliite" -kenttää tyhjäksi. Jos siinä ei ole mitään, WordPress palauttaa oletuksen /category/. Siksi käytämme pistettä: tyhjä merkkijono ei toimi, mutta piste toimii.

Tämä menetelmä toimii useimmilla sivustoilla, mutta siinä on yksi haittapuoli: piste etuliitekentässä on kikka, joka voi hajota WordPress-päivitysten yhteydessä tai kun osoiterakennetta vaihdetaan ja palautetaan. Jos haluat luotettavamman ratkaisun, tutustu seuraaviin menetelmiin.

2. Remove Category URL -lisäosa

Remove Category URL on minimalistinen lisäosa, joka tekee tasan yhden asian: poistaa /category/-osan osoitteista. Ei asetuksia, ei ylimääräisiä valikkokohtia hallintapaneelissa.

Remove Category URL -lisäosan sivu WordPress-hakemistossa

Asennuksen jälkeen lisäosa alkaa toimia välittömästi. Ei lisätoimia: lataa, aktivoi, tarkista kategoriaosoite, ja /category/ on poissa.

Aktivoitu Remove Category URL -lisäosa WordPress-hallinnassa

Miksi juuri tämä lisäosa eikä kymmeniä vaihtoehtoja? Se painaa lähes mitään, ei lisää mainosbannereita hallintapaneeliin ja on yhteensopiva WPML:n ja WordPress Multisiten kanssa. Kun otat lisäosan pois käytöstä, osoitteet palautuvat automaattisesti takaisin /category/-rakenteeseen; lisäosa ei riko osoiterakenteita pysyvästi.

Niille, joiden täytyy käsitellä yläkategorioita kategoriaetuliitteen poistamisen lisäksi, on olemassa vaihtoehto: FV Top Level Categories. Sen avulla voit näyttää minkä tahansa sisäkkäisyystason kategoriat juuritasolla URL-osoitteessa, ilman /category/-osaa ja ilman yläkategorioiden polkutunnisteita.

🔗 Remove Category URL WordPress.orgissa

3. SEO-lisäosat: Yoast SEO ja Rank Math

Jos Yoast SEO tai Rank Math on jo asennettu sivustollesi, et tarvitse erillistä lisäosaa /category/-osan poistamiseen. Molemmissa SEO-jäteissä on sisäänrakennettu toiminto kategoriaperustan poistamiseksi.

Yoast SEO:ssa:

  • Klikkaa WordPress-valikossa Yoast SEO
  • Siirry Advanced-välilehdelle
  • Avaa Permalinks-osio
  • Ota käyttöön "Remove the categories prefix" -asetus
  • Tallenna muutokset

Rank Mathissa:

  • Siirry hallintapaneelissa kohtaan Rank Math → General Settings
  • Avaa WooCommerce-välilehti (kyllä, se on siellä, ei Permalinks-kohdassa)
  • Etsi "Remove Category Base" -asetus ja ota se käyttöön

Molemmat lisäosat tekevät saman asian kuin Remove Category URL, mutta omalla sisäisellä mekanismillaan. Etu: ei tarvita ylimääräisiä lisäosia. Haitta: jos vaihdat toiseen SEO-lisäosaan, kategoriaperusta saattaa palata, ja joudut määrittämään asetuksen uudelleen.

Yoast SEO -asetussivu WordPress-hallinnassa

Muuten, jos vielä valitset Yoastin ja Rank Mathin välillä, tässä on yksityiskohtainen vertailumme, joka auttaa sinua päättämään.

4. Manuaalinen.htaccess-muokkaus

Menetelmä niille, jotka suosivat hallintaa palvelintasolla. /category/-osan poistaminen.htaccessin kautta toimii mod_rewrite-säännöllä, joka ohjaa läpinäkyvästi kaikki kategoria-URL-osoitteet osoitteisiin ilman etuliitettä.

Tarvitset pääsyn sivuston juuressa olevaan .htaccess-tiedostoon FTP:n, hotellin tiedostonhallinnan tai cPanelin kautta. Avaa tiedosto ja lisää seuraava rivi ennen # BEGIN WordPress -lohkoa:

1RewriteRule ^category/(.+)$ http://www.site.com/$1 [R=301,L]
RewriteRule-koodi .htaccess-tiedostolle tekstieditorissa

Korvaa www.site.com omalla verkkotunnuksellasi. Sääntö luo 301-uudelleenohjauksen kaikista /category/-alkuisista URL-osoitteista osoitteisiin ilman tätä etuliitettä.

⚠️ Huomio: tämä menetelmä toimii vain Apache-palvelimilla. Nginx-palvelimella tarvitset vastaavan rivin konfiguraatioon:

1rewrite ^/category/(.+)$ /$1 permanent;

Ennen kuin teet muutoksia, muista varmuuskopioida .htaccess. Syntaksivirhe tässä tiedostossa kaataa koko sivuston 500-virheellä.

Jos sivustosi käyttää Nginxiä, yllä olevan säännön suora vastine on yhtä yksinkertainen, mutta se lisätään palvelinlohkon asetuksiin, ei .htaccess-tiedostoon. Kun sääntö on lisätty, lataa Nginx uudelleen komennolla nginx -s reload. Toisin kuin Apache, Nginx ei lue .htaccess-tiedostoa, joten syntaksivirhe pääasetuksissa kaataa myös sivuston, mutta ei yhtä peruuttamattomasti: Nginx ei yksinkertaisesti käynnisty uudelleenlatauksen jälkeen, jolloin edellinen toimiva prosessi jää käyntiin. Testaa asetukset komennolla nginx -t ennen käyttöönottoa.

5. Koodia functions.php-tiedostossa

Ohjelmallinen tapa niille, jotka haluavat poistaa /category/-osan ilman lisäosia ja palvelinasetuksia muokkaamatta. Koodi lisätään kerran aktiivisen teeman functions.php-tiedostoon ja se toimii tavallisen WordPress-suodattimen kautta.

Ennen koodin lisäämistä varmista, että "Kategorian polkutunnus" -kenttä osoitelinkkiasetuksissa ei ole tyhjä eikä sisällä pistettä; sen tulisi olla vakio (category). Suodatin etsii URL-osoitteesta sanaa "category", ja jos se ei löydä sitä, menetelmä ei toimi.

Avaa Ulkoasu → Teematiedostoeditori, valitse functions.php ja lisää tämä koodi ennen sulkevaa ?>-tagia (jos tagia ei ole, lisää se vain tiedoston loppuun):

1function remove_category_from_url($string, $type) {
2 if ($type !== 'single' && $type === 'category' && strpos($string, 'category') !== false) {
3 $url_without_category = str_replace('/category/', '/', $string);
4 return trailingslashit($url_without_category);
5 }
6 return $string;
7}
8add_filter('user_trailingslashit', 'remove_category_from_url', 100, 2);

Miten se toimii:

  • user_trailingslashit-suodatinta kutsutaan aina, kun WordPress luo kategoria-URL:n
  • Funktio tarkistaa, että kyseessä on todella kategoria (ei artikkeli, ei avainsana) ja että URL sisältää /category/-osan
  • Jos molemmat ehdot täyttyvät, /category/ poistetaan ja loppukenoviiva säilytetään trailingslashit()-funktion avulla

Kun koodi on lisätty, mene kohtaan Asetukset → Osoitelinkit ja napsauta "Tallenna"; tämä tyhjentää osoitelinkkivälimuistin ja ottaa uuden säännön käyttöön.

Tämä menetelmä on joustavin: sinulla on täysi hallinta korvauslogiikasta ja voit lisätä poikkeuksia tietyille kategorioille tai mukauttaa koodin epätyypilliseen URL-rakenteeseen.

Ohjelmointikoodia ruudulla, WordPress-URL-osoitteiden määritys

Jos haluat mieluummin nähdä prosessin toiminnassa, tässä on lyhyt englanninkielinen video-opastus: Remove Category URL -lisäosan asentaminen ja tuloksen tarkistaminen kahdessa minuutissa.

⁉️🤔 Usein kysytyt kysymykset

Katoavatko kategoriat sivustolta, kun /category/ poistetaan URL-osoitteista?

Eivät. Kategoriat toimivat edelleen täysin: kategoria-arkistot toimivat, artikkelit näkyvät niissä ja taksonomia säilyy ennallaan. Vain selaimen osoiterivillä näkyvä osoite muuttuu. Tämä on puhtaasti kosmeettinen muutos osoiterakenteeseen; WordPress tunnistaa kategoriat edelleen sisäisen ID:n perusteella, ei URL-etuliitteen.

Täytyykö minun asettaa 301-uudelleenohjaukset URL-osoitteiden muuttamisen jälkeen?

Kyllä, ehdottomasti. Kun /category/ poistetaan, vanhat /category/-alkuiset osoitteet lakkaavat toimimasta. Jos niihin on ulkoisia linkkejä tai hakukoneet ovat jo indeksoineet ne, saat 404-virheitä..htaccess-menetelmä (menetelmä 4) lisää 301-uudelleenohjauksen automaattisesti. Kun käytät lisäosia tai functions.php-koodia, varmista, että WordPress ohjaa vanhat URL-osoitteet oikein; tämä tapahtuu yleensä automaattisesti, mutta muutaman vanhan osoitteen tarkistaminen muutosten jälkeen on vaivan arvoista.

Mit teen, jos jotkin URL-osoitteet sisältävät edelleen /category/-osan muutosten jälkeen?

Todennäköisesti kyse on välimuistiongelmasta. Tyhjennä osoiterakennevälimuisti: mene kohtaan Asetukset → Osoiterakenteet ja napsauta "Tallenna" muuttamatta mitään. Jos käytät välimuistilisäosaa (WP Rocket, W3 Total Cache), tyhjennä sen välimuisti. Palvelintasolla varmista, etteivät.htaccess-tiedoston mod_rewrite-säännöt ole ristiriidassa uusien asetusten kanssa.

Vaikuttaako /category/-osan poistaminen hakukoneoptimointiin?

Kyllä, mutta vain myönteisesti, jos se tehdään oikein. Lyhyemmät URL-osoitteet saavat enemmän klikkauksia hakutuloksissa, ovat helpommin luettavia ja indeksoituvat nopeammin. Backlinkon tutkimus osoittaa, että lyhyemmät URL-osoitteet korreloivat korkeampien sijoitusten kanssa. Olennaista on muistaa 301-uudelleenohjaukset vanhoista osoitteista, jotta kertynyttä PageRankia ei menetetä.

Mikä menetelmä minun kannattaa valita WooCommercelle?

WooCommerce-verkkokaupoille parhaat vaihtoehdot ovat joko Remove Category URL -lisäosa (se käsittelee tuotekategoriat oikein) tai Rank Mathin sisäänrakennettu toiminto (Remove Category Base). Kumpikaan menetelmä ei ole ristiriidassa WooCommercen päätepisteiden, kuten /product-category/, kanssa. Pistemerkkimenetelmä "Category base" -kentässä toimii myös WooCommercen kanssa, mutta testaa se ensin staging-ympäristössä; jotkin WooCommerce-versiot ovat herkkiä epästandardeille arvoille tässä kentässä.

Toimivatko nämä menetelmät WordPress Multisitessa?

Osittain. Remove Category URL -lisäosa ilmoittaa olevansa yhteensopiva Multisiten kanssa, mutta käytännössä verkkoaktivoituna se käsittelee vain pääsivuston; lapsisivustoille se on aktivoitava erikseen. Pistemerkkimenetelmä "Category base" -kentässä toimii jokaisella verkkosivustolla erikseen; asetukset eivät periydy. Multisiten functions.php-koodi vaatii lisätarkistuksen is_multisite() ja se olisi hyvä siirtää MU-lisäosaan, jotta se ei ole sidottu teemaan. Manuaalinen.htaccess-muokkaus Multisitessa on vähiten suositeltavaa: verkoston URL-rakenne on monimutkaisempi, ja virhe RewriteRulessa rikkoo kaikki sivustot kerralla.

Mikä /category/-osan poistomenetelmä sopii sinulle?

Jokaisella viidestä menetelmästä on oma käyttötarkoituksensa. Tässä nopea valintamatriisi:

  • Et halua asentaa ylimääräisiä lisäosia: menetelmä 1 (piste peruskentässä). Vie 30 sekuntia, ei lisää koodia sivustolle.
  • Haluat minimaalisen vaivan: menetelmä 2 (Remove Category URL). Asenna ja unohda.
  • Sinulla on jo Yoast tai Rank Math sivustollasi: menetelmä 3. Käytä sitä, mikä jo toimii.
  • Haluat hallinnan palvelintasolla: menetelmä 4 (.htaccess). Mutta muista varmuuskopioida.
  • Olet kehittäjä, joka tarvitsee joustavuutta: menetelmä 5 (koodi functions.php:ssä). Lisää juuri tarvitsemasi logiikka.

Useimmille käyttäjille menetelmä 2 (Remove Category URL) on optimaalinen: se on yksinkertainen, ei vaadi teknistä osaamista eikä riko sivustoa, kun se poistetaan käytöstä. Jos käytät jo Yoast SEO:ta, ota asetus käyttöön siellä; älä asenna turhia lisäosia.

Kokeile työnkulkuusi parhaiten sopivaa menetelmää ja tarkista tulos kahdella tai kolmella kategoria-URL-osoitteella. Jos kaikki toimii, olet tehnyt oikean valinnan.

Muutosten tekemisen jälkeen on hyödyllistä ajaa sivustosi läpi millä tahansa SEO-indeksoijalla (Screaming Frog, Sitebulb tai Netpeak Spider): se näyttää, onko kategoriasivuille ilmestynyt 404-virheitä ja toimivatko 301-uudelleenohjaukset vanhoista URL-osoitteista oikein. Tarkista myös XML-sivustokarttasi erikseen: osoiterakenteen muuttamisen jälkeen sen pitäisi päivittyä automaattisesti, mutta joskus se generoituu välimuistiversiosta. Yoast SEO:ssa napsauta "Tallenna" sivustokartta-asetuksissa; Rank Mathissa "Päivitä sivustokartta" -painike on Sivustokartta-asetukset-osiossa. Tämä vie minuutin, mutta suojaa sinua tilanteilta, joissa Google saa sivustokartan vanhoilla URL-osoitteilla.