Vad kommer att hända med centrum?

Hur kan jag omdirigera:

http://example.com/subdir/a.aspx http://example.com/subdir/b.aspx http://example.com/subdir/c.aspx ... 

till:

http://example.com/subdir/ 

med .htaccess snälla du?

Obs! Jag har dessa på min nya webbplats:

http://example.com/subdir/a/ http://example.com/subdir/b/ http://example.com/subdir/c/ http://example.com/subdir/1/ http://example.com/subdir/2/ http://example.com/subdir/3/ ... 

och de får inte påverkas.

Redigera:

/a.aspx och /a/ är bara exempel och inte relaterade.

  • Förmodligen /a.aspx och /a/ är inte släkt? Har du för närvarande en eller flera .htaccess filer? Har du några befintliga direktiv i din .htaccess fil (er)?
  • @MrWhite Redigerad ovan, och det finns bara en .htaccess, några befintliga regler som Redirect /contact.aspx /offices/ plus några WP-genererade linjer.

... några befintliga regler som Redirect /contact.aspx /offices/ plus några WP-genererade linjer.

Eftersom detta är en WordPress-webbplats som förmodligen redan använder mod_rewrite som en del av "front-controller" bör du undvika att blanda i mod_alias (Redirect och RedirectMatch) omdirigera direktiven. Eftersom de två modulerna körs vid olika tidpunkter under begäran, trots deras uppenbara ordning i konfigurationsfilen (mod_rewrite körs först), kan du få några oväntade konflikter. Åtminstone är det ineffektivt, eftersom webbadressen skrivs om före mod_alias Redirect inträffar.

Alla mod_alias Redirect direktiv bör konverteras till "motsvarande" mod_rewrite RewriteRule och placeras innan befintliga WordPress-direktiv. Till exempel i fallet med ovanstående "tillfällig" omdirigering från /contact.aspx till /offices/, detta skulle skrivas som:

RewriteRule ^contact\.aspx$ /offices/ [R=302,L] 

Notera det frånvarande snedstreckprefixet på RewriteRule mönster.

Om detta är tänkt att vara permanent, ändra sedan 302 (tillfälligt) till 301 (permanent) men bara när du har bekräftat att allt fungerar OK. (Observera att Redirect Direktivet som du publicerade i kommentaren är en tillfällig 302-omdirigering.)

För att omdirigera alla förfrågningar för .aspx filer i /subdir katalog till underkatalogens rot, dvs. /subdir/, då skulle du göra följande:

RewriteRule ^(subdir/)[^/]+\.aspx$ /$1 [R=302,L] 

(subdir/) - Detta fångar namnet på underkatalogen (för att spara repetition) och refereras till med $1 backreference i utbyte.

[^/]+ - Detta matchar 1 eller flera icke-/ tecken. Så, vilket filnamn som helst, men inte en URl-sökväg som innehåller flera stigssegment. dvs. Det kommer inte att matcha /subdir/foo/a.aspx.

Jag skulle bara vilja tillägga att från en SEO-synvinkel är det lite tvivelaktigt att omdirigera en massa till ett gemensamt mål som detta. Det kommer sannolikt att ses som en soft-404 i Googles ögon. Och kan vara förvirrande för användare, såvida inte målsidan är något relaterad eller innehåller relevant information för användaren.

  • Funkar bra. Men jag var tvungen att sätta det ovanför WP-reglerna. Är det okej?
  • Ja, det är korrekt, som jag nämnde ovan, "... och placerad innan befintliga WordPress-direktiv. "Om de placeras efter WP-reglerna och dessa .aspx filer finns inte då omdirigeringar inte ens behandlas, eftersom begäran skulle dirigeras via WordPress först (vilket är syftet med WP-reglerna - "front-controller").
  • Re "... det här är lite tvivelaktigt ..." Jag vet det också. Jag har inget bättre val. Tidigare var det /subdir/doe-a-john.aspx. Ny webbadress blir till /subdir/john-a-doe/, och vissa följer inte den exakta omvända last-m-first namnmönster. Så att jag bara omdirigerar dem alla till index / listningssidan.

fungerat för dig: Charles Robertson | Vill du kontakta oss?