mod_rewrite, eller vaddå, för att dölja sajtstruktur?

Tråden skapades och har fått 19 svar. Det senaste inlägget skrevs .
1

Jag har fått bakläsa på en del av min .htaccess-fil där det just nu står;

Redirect index.html http://example.com/public_html/index.html

Detta medför att [public_html] blir synlig. Jag har försökt tränga in i mod_rewrite, men begriper inte riktigt två saker;

dels vill jag att alla som skriver in <example.com> eller <example.com/index.html>, ska vidarebefordras till <example.com/public_html/index.html>,

dels vill jag _inte_ att det ska synas att sajten egentligen i sin helhet ligger i en underkatalogen [public_html] till [root]. Det kanske inte ens är rätt väg att gå?

Helst av all skulle jag vilja trimma .htaccess att bara visa <http://example.com> _oavsett_ var i sajt-strukturen besökaren befinner sig.

  • Medlem
  • Gävle
  • 2008-05-17 13:02

1. Du ska inte ange domännamn där.

2. Mappen public_html ska inte vara en mapp i html-rooten, det är själva html-rooten, det som inte ligger i public_html ska inte vara åtkomligt överhuvudtaget via webben.

1. Varför inte då då? Apache anger det som en möjlig skrivning i redirect. Men jag vill ju inte använda det - egentligen.

2. Det känns som om jag blir mer och mer byfåne, när jag försöker får ordning på detta.

Det förra rådet jag fick ( inte av Dig Jogin ) löd; lägg .htaccess ovanför public_html. Om nu public_html är samma som domän_root, hur i sjutton ska jag kunna lägga något ovanför den?

Jag har ju inte tillgång till den nivån - sajten ligger publicerad på ett web-hotell.

  • Medlem
  • Gävle
  • 2008-05-17 15:39
Ursprungligen av leonardo:

1. Varför inte då då? Apache anger det som en möjlig skrivning i redirect. Men jag vill ju inte använda det - egentligen.

Därför att det är onödigt. Använd sökvägar relativa till html-rooten (alltså public_html är /).

Ursprungligen av leonardo:

2. Det känns som om jag blir mer och mer byfåne, när jag försöker får ordning på detta.

Det förra rådet jag fick ( inte av Dig Jogin ) löd; lägg .htaccess ovanför public_html. Om nu public_html är samma som domän_root, hur i sjutton ska jag kunna lägga något ovanför den?

Lägg inte .htaccess ovanför public_html, det är meningslöst.

Ursprungligen av leonardo:

Det förra rådet jag fick ( inte av Dig Jogin ) löd; lägg .htaccess ovanför public_html.

Nej nej. Det var .htpasswd vi pratade om och som ska ligga utanför html-sidorna. .htaccess lägger du där du känner för och var du vill.

Ursprungligen av thevil:

Nej nej. Det var .htpasswd vi pratade om och som ska ligga utanför html-sidorna. .htaccess lägger du där du känner för och var du vill.

Läser om den tråden och noterar att jag fattat fel. Tack för pepåken.

  • Medlem
  • Stockholm
  • 2008-05-17 15:39
Citat:

Helst av all skulle jag vilja trimma .htaccess att bara visa <http://example.com> _oavsett_ var i sajt-strukturen besökaren befinner sig.

Detta kan du göra med en ram (frame) som är 100%x100% dock är det ett mycket irriterande sätt att hindra användare att skapa bokmärken till vissa sidor och så som de vill besöka igen.. utan att man går in och snokar reda på strukturen vilket iofs inte är svårt.

Vad det gäller dina försök med mod_redirect låter det mest som om du är ute och cyklar när det gäller att åstakomma vad du vill, men jag kan inte påstå att jag 100% förstår vad du menar heller.

Ursprungligen av ntity:

...
... men jag kan inte påstå att jag 100% förstår vad du menar heller.

Då inställer sig naturligtvis den impertinenta frågan; hur kan Du då veta att jag är ute och cyklar?

Lättast är väl kanske att du ändrar hela site-rooten till att ligga i public_html, om du nu inte har nåt ovanför den som skall vara åtkomligt?

RewriteRule ^(.*)$ public_html/$1

Jag är sjukt dålig på att skriva rewrites direkt från huvudet, men något sådant borde fixa biffen.

Att lägga .htpasswd ovanför webroten är inget måste, du kan enkelt blocka all access via webben till filen.

<Files .htpasswd>
Order allow, deny
</Files>
Ursprungligen av irrelogical:

...
Att lägga .htpasswd ovanför webroten är inget måste, du kan enkelt blocka all access via webben till filen.

<Files .htpasswd>
Order allow, deny
</Files>

Borde det inte vara

<Files .htpasswd>
Order allow, deny
deny from all
</Files>

frågar jag med sedvanlig reservation för trasigt framhjul?

  • Medlem
  • Gävle
  • 2008-05-18 11:37

Hela syftet med denna rewrite-regel är att "fixa" en felaktigt konfigurerad webbserver. Jag föreslår att konfigurera webbservern riktigt istället, och alltså ange public_html som själva webbrooten, som det ska vara — då behövs inte rewrite-regeln längre.

Ursprungligen av Jogin:

Hela syftet med denna rewrite-regel är att "fixa" en felaktigt konfigurerad webbserver. Jag föreslår att konfigurera webbservern riktigt istället, och alltså ange public_html som själva webbrooten, som det ska vara — då behövs inte rewrite-regeln längre.

Låter precis som det jag vill göra. Problemet är bara att sajten ligger på ett hotell = jag har inte tillgång till .config, alltså måste jag lösa det "per directory" = .htaccess.

Eller har jag nu satt mig på cykeln igen?

Du har så rätt så, men ibland vill man "flytta" webbroten. T ex en del frameworks har den publika webbroten som en undermapp. Men i det här fallet är det enklare att bara flytta alltihopa.

  • Medlem
  • Gävle
  • 2008-05-18 20:25
Ursprungligen av irrelogical:

Du har så rätt så, men ibland vill man "flytta" webbroten. T ex en del frameworks har den publika webbroten som en undermapp. Men i det här fallet är det enklare att bara flytta alltihopa.

Om frameworket har den publika webbroten som en undermapp så behöver man inte flytta webbroten — eftersom den i default-konfigurationen redan är en undermapp.

  • Medlem
  • Stockholm
  • 2008-05-23 00:07
Ursprungligen av leonardo:

Jag har fått bakläsa på en del av min .htaccess-fil där det just nu står;

Redirect index.html http://example.com/public_html/index.html

Detta medför att [public_html] blir synlig. Jag har försökt tränga in i mod_rewrite, men begriper inte riktigt två saker;

dels vill jag att alla som skriver in <example.com> eller <example.com/index.html>, ska vidarebefordras till <example.com/public_html/index.html>,

dels vill jag _inte_ att det ska synas att sajten egentligen i sin helhet ligger i en underkatalogen [public_html] till [root]. Det kanske inte ens är rätt väg att gå?

Helst av all skulle jag vilja trimma .htaccess att bara visa <http://example.com> _oavsett_ var i sajt-strukturen besökaren befinner sig.

Om du gör en redirect så ber sajten browsern att anropa med den nya URL:en istället. Vad du vill göra är en rewrite istället så att det som är skrivet i browsern blir kvar, men servern titta på det nya stället istället (utan att det syns för användaren). Om du förtår.

OBS - tänk på att om du styr så att alla sidor hamnar på example.com - så att sidorna ej får sina egna URI, så kommer sökmotorerna inte att kunna göra någon vidare indexering på din sida. De kommer att betrakta alla länkar som pekandes på index-sidan och därmed är det oklart vad de egentligen kommer att indexera. Antagligen bara din "landing page"

Jag har övergett lösningen helt ock hållet, mest pga. ovilja från hotellägaren att berätta vad som står i .config. Detta medför bl.a. att jag måste testa det mesta för att se om jag måste köra override i .htaccess eller inte. Det blev för mycket knåpande helt enkelt. Jag löste problemet genom att skriva en "falsk" index-sida som bara innehåller en ram, och i den laddas alla andra sidor = det står bara http://exempel.com som URL, oavsett var på sajten besökaren befinner sig.

Indexering av efterföljande sidor av ointressant, mycket eftersom den trafik sidan får, antingen kommer via en portal, eller via en länk på en annan hemsida som jag skrivit. Mycket av innehållet är känsligt, så indexering är utesluten även av det skälet.

Att det inte går att sätta bokmärken till underliggande sidor på sajten är heller inget problem, mest pga. att jag lagt all viktig information åtkomligt från det som syns när den falska index.html laddats.

Ett mer prekärt problem som uppstått och som jag just nu inte kunnat lösa, är att serverns egna felmeddelanden, med referensen till sidan, visas, i stället för de egna felmeddlanden jag skapat för alla de felmeddelanden som refererar till en viss sida. Jag vill ju sopa igen spåren av strukturen. Jag har inte lyckats hitta information om vad som är override-kommandot för att ge mina meddelanden prioritet över serverns.

  • Medlem
  • Gävle
  • 2008-05-23 12:44

Ett tips är att byta hotelleverantör, låter inte särskilt proffsigt alls det där. Egentligen är det ju jävligt galet att man ska behöva ta till tricks för att "fixa" en felaktigt konfigurerad webbserver...

Asch - nu har det blivit lite sport att lösa det. "Det som inte dödar direkt - härdar på sikt". Det ger mig massor av ny kunskap åxå, så jag klagar inte, men support är begränsat till "fam. Svensson nivå", och jag får en känsla av att jag ställer för specifika frågor och att de får säktok-noja och svarar med automat-nej.

En uppebar väg att lösa detta är att på sikt sätta upp egen server i huset och göra det jag vill göra med den, utan att nå'n stackare behöver få hjärtslag varje gång jag undrar över saker, eller "pillar lite här, och pillar lite där".

1
Bevaka tråden