21. januar 2014 - 20:11 Der er 8 kommentarer og
1 løsning

Omskrive url's

Jeg hjælper, på amatørbasis, en forening med dens hjemmeside.  Foreningen ejer domænen gamrupa.org, men af historiske grunde sidder indholdet af hjemmesiden bag en domæne med det mærkelige navn marcete5.five.axc.nl/new.  Jeg har af forskellige grunde presset på med at bruge gamrupa.org, og nu er tiden inde.  I næste uge flyttes indholdet over.  Så den side der nu, for eksempel, har url'en marcete5.five.axc.nl/new/projects wil skifte url til gamrupa.org/projects.  Men i et stykke tid vil der være mange links mange steder til de bestående url'er.  Jeg vil naturligvis gerne undgå, at folk bliver afvist, når de forsøger at kontakte hjemmesiden.  Jeg har hørt om, at man kan 'rewrite' i .htaccess filer, men hvordan det hænger sammen har jeg ikke forstået.  Kan nogen hjælpe?
Avatar billede LNG.DK Novice
21. januar 2014 - 20:43 #1
Kører hjemmesiden et CMS eller er det kodet fra bunden af?

301 rewrites kan laves på forskellige måder i .htaccess men det afhænger af hvilket system hjemmesiden ligger på.

Hvis det er apache og php som siden er lavet i nu kunne en redirect se sådanne ud:

#####################################################
#  Rewrite af "gamle" URL´s til korrekte URL´s
#  Dette er et eksempel   
### redirect 301 /forside.html http://www.domæne.dk
#
redirect 301 /forside.html http://www.domæne.dk
redirect 301 /sitemap.html http://www.domæne.dk/sitemap
#
#####################################################
#For redirecting /index.php to www.domainname.com:

Options +FollowSymLinks
DirectoryIndex index.php

RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.domæne.dk/ [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

#####################################################


#####################################################
#  Rewrite af dynamiske URL´s til korrekte URL´s
#
#RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=4&Itemid=5$
#RewriteRule ^index.php$ http://www.domæne/sidenavn.html? [R=301,L]
#
#####################################################

#####################################################
#  Rewrite af alle URL´s så de indeholder www
#
RewriteEngine On
RewriteCond %{HTTP_HOST} ^domæne.dk
RewriteRule (.*) http://www.domæne.dk/$1 [R=301,L]
#
#####################################################
Avatar billede LNG.DK Novice
21. januar 2014 - 20:45 #2
Denne fik jeg da lavet fyldt med fejl så den får du lige igen:


#####################################################
#  Rewrite af dynamiske URL´s til korrekte URL´s
#
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=4&Itemid=5$
RewriteRule ^index.php$ http://www.domæne.dk/sidenavn.html? [R=301,L]
#
#####################################################
21. januar 2014 - 22:45 #3
Der fik du kyllingehjernen sat på arbejde.  Lad mig først svare, at hjemmesiden bruger et CMS, nærmere betegnet Joomla 2.5.  Den kører på en apache server, og siderne er kodet i html og php.

Så har jeg prøvet at studere dine eksempler og prøvet at google udtrykkene for bedre at forstå (hvilket for det meste resulterede i det modsatte.)  Jeg prøver at undgå på nuværende tidspunkt at lære for meget mod_rewrite teori (der er en masse andet jeg skal have bedre fat på først) men håber at kunne snævre det ind til det øjeblikkelige problem, at alt hvad der nu sidder i url www.marcete5.five.axc.nl/new flyttes rub og stub over i www.gamrupa.org.  Nogle sider har nu en url såsom www.marcete5.five.axc.nl/new?option=com_content&view=article&id=4&Itemid=5$ .  Det bliver til www.gamrupa.org?option=com_content&view=article&id=4&Itemid=5$ .  Andre sider har nu en url såsom www.marcete5.five.axc.nl/new/projects/ambulance .  Det bliver til www.gamrupa.org/projects/ambulance. 

Jeg forestiller mig, måske naivt, at når nogen kalder en url der starter med www.marcete5.five.axc.nl/new, så kommer man til en slags regular expression der erstatter www.marcete5.five.axc.nl/new med www.gamrupa.org og lader resten forblive det samme.

Og det forklarer du sandsynligvis, det er bare mig der ikke fatter det.

Jeg ser for eksempel denne linje:
RewriteCond %{QUERY_STRING} ^option=com_content&view=article&id=4&Itemid=5$.  Der :har jeg to kommentarer/spørgsmål

1.  Jeg har googled og fundet ud af, at RewriteCond giver en 'condition' under hvilken en rewrite rule skal udføres.  Men i mit problem er det vel ikke nødvendigt med en 'condition.'  I alle tilfælde hvor en sub-streng 'www.marcete5.five.axc.nl/new' forekommer skal den erstattes af sub-strengen 'www.com.gamrupa' .
2.  'id=4&Itemid=5$' kunne tyde på, at du foreslår at lave en rewrite regel for hver enkel af de godt 100 sider.  Jeg havde håbet på en enkel regelder kunne bruges i alle tilfælde.

Da jeg googlede rundt fandt jeg denne meget simple 'rule':
RewriteRule ^foo$ bar
Den regel skulle resultere i, at overalt hvor der står 'foo' kommer der til at stå 'bar'.  Så hvis jeg på det rette sted (hvor det så måtte være) skrev
RewriteRule ^marcete5.five.axc.nl/new$ gamrupa.org
ville det så være løsningen på mit problem?  Eller har jeg misforstået det hele?
Avatar billede LNG.DK Novice
23. januar 2014 - 09:21 #4
Er det kun domænet som bliver ændret? Forstået på den måde at www.marcete5.five.axc.nl/new/ bliver erstattet af www.gamrupa.org/ alt efter sidste skrå streg forbliver det samme?

Hvis det er tilfældet kan du nøjes med at lave en redirect af domænenavnet og matche resten op automatisk.

Hvis din nye side har nye url adresser så kan det være nødvendigt at matche de enkelte urls op i mod hinanden.
23. januar 2014 - 09:46 #5
Jep, det er kun domæne navnet der ændres.  Alt efter skråstregen forbliver det samme.  Så jeg søger at finde ud af hvordan jeg kan reirecte domænenavnet og matche resten op automatisk.

Så hen ad vejen vil jeg vel få brug for at ændre url'er indenfor www.gamrupa.org.  Til den tid skal jeg nok igang med mere komplicerede redirekter, og jeg kommer så nok tilbage.  Men en ting ad gangen.
Avatar billede LNG.DK Novice
23. januar 2014 - 10:46 #6
301 redirects kan være forvirrende, her kan du finde en liste over de forskellige muligheder og kode eksempler: http://www.howto301redirect.com/htaccess-redirect/
23. januar 2014 - 12:55 #7
Kyllingehjernen udvikler sig.  Jeg har kikket på dit link, og jeg har googled videre.  Mine problemer var blandt andet, at jeg ikke vidste hvad en 301 redirect er og heller ikke hvad en .htaccess file bliver brugt til.  Det jeg nu tror jeg forstår er, at når en spørgende server tilgår en hjemmeside med en bestemt url, så ser den modtagende, svarende serveren først efter, om der er en .htaccess file i roden på denne url, og hvis så, om der er en regel den skal tage hensyn til.  Hvis der ikke er nogen relevant regel, så returnerer den svarende server den requestede side til den spørgende server.  Hvis der er en regel i .htaccess, så returnerer den svarende server den regel til den spørgende server.  Hvis den regel er lavet rigtigt, så indeholder den en besked som den spørgende server kan forstå, såsom at den spørgende server skal gå til en anden url.  Hvis reglen indeholder '301' betyder det, at den requestede url permanent er flyttet. 

Puha.  Jeg ser så, at der i roden på  www.marcete5.five.axc.nl sidder en .htaccess file der blandt andet indeholder denne regel:  'Redirect 302 /old http://marcete5.five.axc.nl/new'

En forhistorie er, at http://marcete5.five.axc.nl før min tid blev sat op for en Joomla hjemmeside i version 1.5 der var ved at være forældet.  Hjemmesiden blev derfor sat i en sub-folder 'old'.  Jeg deltog i upgrade til version 2.5, som vi satte i folderen 'new'.  Redirekten lavede jeg ikke selv, jeg kan nu se, at det nok skulle have været 301 og ikke 302.  Der vil i fremtiden kunne blive ved med at komme requests på  'old' som så skal omdirrigeres.

Jeg kunne derfor forestille mig, at der i .htaccess filen for http://marcete5.five.axc.nl skal være denne regel:

Redirect 301 / http://gamrupa.org/

Det skulle have den virkning, at alle requests der kommer til http://marcete5.five.axc.nl bliver redirrigerede til http://gamrupa.org.

Derudover skal jeg nok i .htaccess filen i gamrupa.org have to regler:

'Redirect 301 /old http://gamrupa.org'  og

'Redirect 301 /new http://gamrupa.org'

Kan det lyde rimeligt, eller har jeg misforstet det hele?
Avatar billede LNG.DK Novice
23. januar 2014 - 13:55 #8
Din forståelse er spot on :o)

Jeg vil næsten råde dig til at teste det, nu hvor der allerede ligger "gamle" redirects - på den måde kan du lettere se om det virker efter hensigten.
23. januar 2014 - 14:27 #9
Jamen så har jeg da lært noget.  Tak for hjælpen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester