webForumDet fria alternativet

Ack denna .htaccess fil

Webbutveckling

8 svar · 1 477 visningar · startad av haider

Medlem sedan jan. 2003956 inlägg
Frågan#1

Jag kan bara säga x(

Snälla, hjälp mig.
Jag vill dels byta ut så att samtliga inkommande URL till index.html hädanefter permanent pekar till index.php.

Sedan har jag en viss sida som har index1.html och index2.html. Dessa vill jag jag peka om till index.php med. Fast i samma mapp.

Senare skulle jag vilja peka om alla html till php då hela sidan byts ut, men jag är rädd att det blir en krock vid index1.html ovan som ju inte ska bytas till index1.php utan den ska ju fortfarande pekas till index.php.

Om vi börjar med vad jag provade på och jag är banne mig säker att det funkade kl1 i natt, fast då var jag kanske yr i mössan o fick för mig att det äntligen funkade så jag kunde gå o lägga mig.

redirectpermanent /index2.html http://www.domain.se/mapp/index.html

Ja, jag vet att jag här pekar till index.html, men det är en tillfällig lösning. Många tillfälliga lösningar.
Men den lösningen funkar inte ens nu idag.
:x

Medlem sedan mars 20007 896 inlägg
#2
RewriteEngine On
RewriteBase /

RewriteRule ^index(.*)?\.html$ /index.php [R=301,L]

R=301 = Flyttad permanent

Edit,
Nu kanske jag läste lite slarvigt - mitt exempel utgår enbart från roten. Vill du att det ska gälla i undermappar också? Har du index-filer i alla undermappar? Finns det undermappar i undermapparna som reglerna ska gälla för också?

Medlem sedan jan. 2003956 inlägg
#3

Hej Spin,

Ja, det finns undermappar, men det gör inget att du även skriver en lösning som gäller per mapp ifall jag vill ha en htaccess i varje mapp för att vid behov undvika att en del undermappar utför denna.

edit: så man måste använda rewrite och inte redirect. Är det för att man "skriver om" URL:en i samma mapp och inte vidarebefordrar till (helt) extern sida?

Medlem sedan jan. 2003956 inlägg
#4

Betyder det även att jag kan skriva så här:

RewriteRule ^index1.html$ /index.php [R=301,L]
RewriteRule ^index2.html$ /index.php [R=301,L]

Om jag vill att en inkommande URL till index1.html ska peka till index.php?
Just denna vill jag inte ska gälla i hela sajten, bara en mapp.

Medlem sedan mars 20007 896 inlägg
#5

Jag visste inte ens att det fanns något redirect-kommando, jag använder alltid omskrivningar.

Mitt exempel vidarebefodrar förfrågningar till /index.html, /index2.html, /index3.html, /indexvad_du_vill.html till /index.php och sätter en header att sidan är permanent flyttad dit. Vill du bara tillåta siffror mellan index och .html byter du ut (.*) mot (\d+).

För att hantera undermappar borde du kunna göra så här:

RewriteRule ^index(\d+)?\.html$ /index.php [R=301,L]
RewriteRule ^([a-öA-Ö\d_\.-]+)?/?index(\d+)?\.html /$1/index.php [R=301,L]
RewriteRule ^([a-öA-Ö\d_\.-]+)?/?([a-öA-Ö\d_\.-]+)?/?index(\d+)?\.html$ /$1/$2/index.php [R=301,L]

Nu skriver den om:
index.html, index1.html, index9923.html => index.php
/vilkenmappsomhelst/index.html|index2.html => /vilkenmappsomhelst/index.php
/mapp1/mapp2/index.html|index2.html => /mapp1/mapp2/index.php

(Borde dock kunna lösas snyggare för mappstrukturen, men det här var vad jag snabbt kunde komma på)

Medlem sedan jan. 2003956 inlägg
#6

Tack i förhand Spin, jag ska kika närmare på det.
Vad gäller o snygga till lösningen så är behovet i första hand tillfälligt. Jag kommer sen att kolla om Google har pekat om sökvägarna så skrotar jag htaccess filerna efterhand som.

Mycket är ju mitt eget fel eftersom jag trasslade till det vilket i sin tur ledde till att google leder folk in till fel sidor.

Medlem sedan jan. 2003956 inlägg
#7

Så här har jag gjort nu

RewriteEngine On
RewriteBase /
RewriteRule ^index(.*).html$ /subfolder/index.php [R=301,L]

Grejen är den att .htaccess filen redan finns i subfolder och jag vill antingen slippa använda "subfolder", alltså att den utför rewrite i den mapp som den redan befinner sig i eller ännu bättre är om den gör denna rewrite process från den mapp htaccess filen finns i och nedåt i undermapparna.

Går det? Eller måste jag ha en unik htaccess fil i varje undermapp?

Medlem sedan mars 20007 896 inlägg
#8

Jag förstår inte riktigt hur du menar, men du kan ju antagligen använda

%{REQUEST_FILENAME}

för att få ut mappstrukturen dynamiskt. Det är dock lite för komplicerat för att jag ska hinna med att hitta en bra lösning just nu... Jag är tyvärr ingen .htaccess-guru, så jag får tänka till innan jag börjar pilla i den. ;)

Det är ju absolut fördelaktigt att använda enbart en .htaccess när det gäller omskrivningar, men det kan ju som sagt bli klurigt att försöka lösa det för en massa olika mappstrukturer...

Medlem sedan jan. 2003956 inlägg
#9

Tack, då vet jag.

Det är mest för att spara in tid som jag kände att det vore bra att ha en htaccess fil.
Men i långa loppet kommer det funka alldeles utmärkt med en fil per mapp och förr eller senare kommer jag att ta bort dem när sökmotorerna indexerat klart och uppdaterat länkarna.

263 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)