Regulære udtryk i .htaccess
Hej derude,Desværre for mig, så har regex aldrig været min stærke side og med en længere pause fra faget, så er jeg lidt på bar bund. Jeg har brug for at opdatere dem lidt på mit firma site, da jeg ikke synes, de virker helt optimalt. So here goes.
P.t. har jeg en .htaccess som ser således ud:
ErrorDocument 404 /index.php
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)$ [NC]
RewriteCond %{HTTP_HOST} !^(.*)\.(.*)\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ HTTP%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301]
RewriteRule index.php / [R,L]
RewriteRule Arbejde arbejde.php [L]
RewriteRule arbejde.php Arbejde [R,L]
RewriteRule Historie historie.php [L]
RewriteRule historie.php Historie [R,L]
RewriteRule Vision vision.php [L]
RewriteRule vision.php Vision [R,L]
.....
Først og fremmest, så er det lavet således at www. tilføjes URL, hvis den tastes uden, hvilket er fint.
Hvis jeg taster www.domæne.dk/nogetforkert eller www.domæne.dk/nogetforkert/nogetforkert/sdfsfds fx, så redirecter den til www.domæne.dk, hvilket også er fint.
Hvad jeg dog har opdaget er, hvis jeg taster www.domæne.dk/nogetforkert/Vision, så viser den siden "Vision" fordi den findes som underside, på trods af at URL'en ikke findes. URL'en er i virkeligheden selvfølgelig bare www.domæne.dk/Vision og bør kun virke herpå. Da man åbenbart kan tilgå undersiderne via en forkert URL, så vises siderne i disse tilfælde heller ikke korrekt, grundet stier til stylesheets, billeder m.v. ikke passer. Det er et problem, da Google er begyndt at indeksere sider med disse forkerte adresser til min hjemmeside, hvilket selvfølgelig er uheldigt. Så jeg bliver nødt til at reagere på det.
Det jeg ønsker er sådan set bare, hvis man skriver www.domæne.dk/nogetforkertwhateverher/Vision, så ændres det til www.domæne.dk/Vision
Hvis der tastes noget som slet ikke findes, så skal den redirecte til www.domæne.dk, som den også gør nu.
Derudover jeg har opdaget, at taster man domæne.dk/Vision,så fejler den med ERR_TOO_MANY_REDIRECTS. Den burde have tilføjet www., men det fungerer åbenbart kun i root?
Sidst, men ikke mindst, så er der de mange redirects (langt de fleste klippet bort herinde).. Det irriterer mig, at jeg har bygget det op sådan, da det er rodet og besværligt. Kan man ikke lave et array i en .htaccess og have det deri, så man kun behøver at have én kondition og én regel, og så looper arrayet igennem? Sådan ville jeg jo typisk lave det i PHP.
Jeg håber, der er en som kan hjælpe mig med, hvordan det regulære udtryk skal se ud, for at løse de ovenstående problematikker? Jeg kan sgu ikke selv lige lure, hvordan det bør skrives.
På forhånd tak!