Back to Question Center
0

Problem med 301 omdirigering till endast Semalt-sida

1 answers:
. htaccess för gamla sidor, vilket fungerar bra.

Men ett problem som har plågat mig i åratal är att det finns många länkar där ute till min gamla indexsida index. html ) - segnapasso led per scale. Jag vill omdirigera dem till det nya indexet. (om det fortfarande är hur det fungerar?)

Problemet är om jag gör omdirigering från index. html till index. php det fungerar bra för min huvudwebbplats men påverkar också andra webbplatser (separata webbadresser) som körs från undermappar på samma server. Det gör indexsidorna på alla andra webbplatser omdirigera till den viktigaste också.

Hur kan jag skriva en omdirigering som endast påverkar indexsidan för huvuddomänen utan att påverka de andra sidorna? Min uppenbara första tanke var att använda två absoluta webbadresser, men det är tydligen ett nej-nej?

February 5, 2018

Om du antar att dina "andra webbplatser" använder olika domäner / värdar kan du kolla HTTP_HOST innan du vidarebefordrar. Samma som du skulle göra för en kanonisk www-omdirigering.

Detta kräver emellertid användningen av mod_rewrite. Antag exempel. com är din huvuddomän, då kan du göra något av följande:

  RewriteEngine On
RewriteCond% {HTTP_HOST} ^ (www \. )?exempel\. com [NC]
RewriteRule ^ index \. html $ / [R = 301, L] 

Vad detta gör är för alla förfrågningar som matchar / index. html och värd matchar exempel. com (eller www. exempel. com ) sedan 301 omdirigera till exempel. com / (eller www. exempel. com / ).

Observera att det här bara omdirigeras till / och tillåter mod_dir att hämta den önskade DirectoryIndex (dvs. index. php ). Om du verkligen vill vara explicit och omdirigera till index. php (rekommenderas inte, om inte det är vad du för närvarande gör), ta med hela substitutionen / index. php .

Den (www \. )? (gör www valfritt) skulle vara onödigt om du har en kanonisk omdirigering på plats.

Om du för närvarande använder Omdirigering (eller RedirectMatch ), en del av mod_alias, då skulle du helst konvertera dessa till mod_rewrite. Annars var försiktig med eventuella konflikter. mod_alias kommer att springa efter mod_rewrite, trots den uppenbara ordningen i direktiven i . htaccess .

Min uppenbara första tanke var att använda två absoluta webbadresser, men det är tydligen ett nej-nej?

Det är bara en "nej-nej" i den mån Apache-direktiven inte tillåter dig att ange en absolut webbadress som källa . De förväntar sig bara en URL-sökväg. Deladressen värd av källadressen är utdelad. En absolut mål URL (eller substitution i mod_rewrite terminologi) är dock helt OK.

andra webbplatser (separata webbadresser) som körs från undermappar

Köra separata webbplatser i underkataloger utanför huvuddomänen är inte idealiska, om de inte är nära besläktade. Eftersom . htaccess filer ärvda längs filsystembanan kan du ha konflikter.