Hvordan kan jeg lage en rewrite i .htaccess for å gjøre om alle urler med æ, ø eller å?
Spesifikt problem er bringeb%E6r-ostekake hvor %E6 trengs å gjøres om til æ.
Hvordan kan jeg lage en rewrite i .htaccess for å gjøre om alle urler med æ, ø eller å?
Spesifikt problem er bringeb%E6r-ostekake hvor %E6 trengs å gjøres om til æ.
Hvorfor må de rewrites i .htaccess? Er det ikke lettere med en search&replace for så å få kontroll på character encoding i fremtiden?
Tenker du dynamisk Tonny? eller er det bare snakk om noen få adresser?
Forslag dersom s&r ikke er noe alternativ:
RewriteRule ^(.*)%E6(.*)$ /$1æ$2 [L,R=301]
Hvordan vil dette påvirke indeksering hos Google? vil man da se Æ i url som resultat eller %E6?
Vil det f.eks. være bedre og heller gjøre det om til, ø=oe, å=aa etc?
Usikker på det… Har aldri testet særnorske bokstaver i slugs, men ser ut som det dukker opp ok: https://www.google.no/?gfe_rd=cr&ei=x55OVLbpOqSr8we88YKIDA&gws_rd=ssl#q=bringebær
Har det betydning ift SEO om slug er /bringebær-ostekake/ vs /bringebaer-ostekake/ ?
Nei, det var det jeg lurte på, om det spiller noen rolle, eller om google bare forstår? noen andre som vet? evt. hva som skjer hos andre søkemotorer?
Nå blir dette offtopic, men er vel relevant for Tonny uansett..
Dynamisk.
Nei, da ødelegger man ø`en i slugen. Det er denne urlen det dreier seg om: mineoppskrifter.no/bringebær-ostekake/
Google leter etter mineoppskrifter.no/bringeb%E6r-ostekake, men finner den ikke. Så jeg vil redirekte den til mineoppskrifter.no/bringebær-ostekake/.
redirect 301 bringeb%E6r-ostekake http://www.mineoppskrifter.no/bringebær-ostekake/ i htaccess fungerer heller ikke. Men det har fungert tidligere.
Her er forøvrig hele .htaccess som ikke fungerer nå. %E6 blir ikke æ.
#BEGIN WordPress
RewriteEngine On
RewriteBase /
RewriteRule ^index.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteRule ^(.)%E6(.)$ /$1æ$2 [L,R=301]
Hvis den forandres fra æ til ae har det stor betydning, hvis den konstant er det ene eller det andre spiller det ingen rolle.
Oppdaget at det ligger en fil i root med dette innholdet som gjør at innlenker som http://www.mineoppskrifter.no/view_recipe.php?id=4867&recipe_title=Sjokoladekake_med_poteter fungerer:
<?php if ( strpos($_SERVER['REQUEST_URI'], 'view_recipe.php') !== false) { if ( ! isset($_GET['recipe_title'])) $uri = '/'; else $uri = '/' . str_replace('_', '-', $_GET['recipe_title']); if (substr($uri, -1) == '-') $uri = substr($uri, 0, -1); //$uri = strtolower($uri); //$uri = strtolower(str_replace(array('r', 'b', '%E6', '%F8', '%E5'), array('ggg', 'z', 'æ', 'ø', 'a'), $uri)); $uri = strtolower(str_replace(array('%E6', '%F8', '%E5'), array('æ', 'ø', 'a'), $uri)); //$uri = strtolower(str_replace(array('Æ', 'Ø', 'Å'), array('æ', 'ø', 'å'), $uri)); header('Location: http://www.mineoppskrifter.no'.$uri , true, 301); exit; } ?>Så vidt jeg vet, så oversetter jo wordpress æøå til “ea” osv, er det ikke bedre og bare beholde det slik? skjønner ikke hvorfor du får %E6 etc?
Saken er at det er en del innlenker til nettsida som har %E6 i urlen. Disse innlenkene går nå ikke til riktig side, de går bare til en 404 side fordi sida med %E6 ikke finnes. Disse lenkene gikk til riktig side tidligere, men altså ikke nå lenger. Det er verdifulle lenker som er veldig bra for sida så jeg er veldig oppsatt på å beholde dem.
Testa kjapt nå.. fikk det ikke til å fungere jeg heller. Virker som URL blir urldecoded automatisk i .htaccess før rewriten og da nytter det jo ikke søke på de tegna.
Du kan jo alltids gjøre noe i php da, noe ala dette feks:
[PHP]$requested_url = $_SERVER[REQUEST_URI];
if(stristr($requested_url, ‘%’)){
$new_url = urldecode($requested_url);
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: $new_url”);
}[/PHP]
NB! ikke testet…
Ok, takk for den, jeg kan ikke PHP, er det slik du mener? Og at jeg legger inn dette i head tagen?
[CODE] $requested_url = $_SERVER[REQUEST_URI];
if(stristr($requested_url, ‘%E6’)){
$new_url = urldecode($requested_url);
header(“HTTP/1.1 301 Moved Permanently”);
header(“Location: http://www.mineoppskrifter.no/bringebær-ostekake/”);
} [/CODE]
Ja noe sånt, men den vil i teorien videresende ALLE url som inneholder ‘%E6’ til
http://www.mineoppskrifter.no/bringebær-ostekake/ og det kan jo være litt dumt.
Her er en som funker og med kommentarer på hva den gjør ![]()
[PHP] $url = $_SERVER[REQUEST_URI]; // henter requested url (alt etter domenenavn) og lagrer det til en variabel kalt $url
if(stristr($url, '%E6')){ // hvis søkestrengen '%E6' finnes i $url variabel
$new_url = str_replace('%E6', '%C3%A6', $url); // lag en ny url der alle tilfeller av '%E6' erstattes med '%C3%A6'
header("HTTP/1.1 301 Moved Permanently"); // sett opp en 301 redirect
header("Location: http://www.mineoppskrifter.no" . $new_url); // redirect til den ny adressen
exit; // stopp videre execution av script
}[/PHP]
Edit: Må legges inn før tag helt øverst i koden. Du får en feilmelding på “headers allready sent” hvis du legger den inn i . Ingenting kan outputtes før scriptet kjøres.
Det fungerer tigeren, takk!!!