webForumDet fria alternativet

Alltid komma till en sida/rooten. htaccess?

PHP

22 svar · 985 visningar · startad av filipbh

Medlem sedan juli 2002405 inlägg
Frågan#1

Hej...

Om man vill att besökaren ska komma till rooten eller en viss sida oavsett vad som skrivs i adressfältet, hur gör man då? Är det någonting i .htaccess?

T.ex. https://www.sida.se/undermapp/fil.php så kommer man till https://www.sida.se.

Tacksam för svar

Medlem sedan aug. 20002 975 inlägg
#2

Det går sannolikt att på ett enkelt sätt att lösa med htaccess, men tyvärr har jag inte kunskap att hjälpa dig med det.

Men eftersom du ställt frågan i PHP-forumet så kan du lösa det med PHP genom att lägga följande överst i all filer, förutom index-filen:

<?php

if ($_SERVER['PHP_SELF'] != '/index.php') {
   header("Location: /");
   exit;
}
Medlem sedan mars 20034 471 inlägg
#3

Matte skrev:

Det går sannolikt att på ett enkelt sätt att lösa med htaccess, men tyvärr har jag inte kunskap att hjälpa dig med det.

Men eftersom du ställt frågan i PHP-forumet så kan du lösa det med PHP genom att lägga följande överst i all filer, förutom index-filen:

<?php

if ($_SERVER['PHP_SELF'] != '/index.php') {
   header("Location: /");
   exit;
}

Fast med denna lösning kan du aldrig visa dina övriga sidor med mindre än att de inkluderas i index.php. Om din avsikt bara var att man inte ska kunna länka sig in längre ner i strukturen utifrån (dvs från andra sidor än dina egna) så får du kolla på referer värdet i stället. Men tänk på att det finns brandväggar (och webbläsare tror jag) som blankar detta innehåll. I så fall kan du kanske lösa det med att sätta sessioner eller cookies på index-sidan och göra redirecten längre ner bara om session/cookie saknas.

Medlem sedan aug. 20002 975 inlägg
#4

aasah skrev:

Fast med denna lösning kan du aldrig visa dina övriga sidor med mindre än att de inkluderas i index.php.

Så uppfattade jag önskemålet var.

aasah skrev:

... får du kolla på referrer värdet i stället. Men tänk på att det finns brandväggar (och webbläsare tror jag) som blankar detta innehåll.

T.ex. spärrar, det inte alltför ovanliga, Norton Internet Security REFERER som default.

Medlem sedan mars 20034 471 inlägg
#5

Matte skrev:

Så uppfattade jag önskemålet var...

Det kan du mycket väl ha rätt i. :) Jag var bara inte lika säker, och beroende på hur mycket filipbh har koll på inom PHP/webbprogrammering så tyckte jag att det kunde vara värt att påpeka.

Medlem sedan juli 2002405 inlägg
#6

Jo, jag menade som du skrev koden Matte. Nackdelen är ju bara att jag måste sätta denna kod i alla filer och det är ju några stycken. Därför tänkte jag om man kunde göra det i .htaccess för då borde det gälla alla filer och mappar under rooten. Men jag får nöja mig med detta så länge :)

Tack

aasah skrev:

Det kan du mycket väl ha rätt i. :) Jag var bara inte lika säker, och beroende på hur mycket filipbh har koll på inom PHP/webbprogrammering så tyckte jag att det kunde vara värt att påpeka.

Det är sant, tänkte inte på den delen...

Medlem sedan mars 20032 667 inlägg
#7

I .htaccess

Redirect / http//www.sida.se

Bör ju fungera om jag fattat saken rätt. :)

Medlem sedan juli 2002405 inlägg
#8

K@llen: Har försökt med den raden men får det inte att fungera. Antar att det ska vara http:// också. Men det gjorde ingen skillnad. La även till / i slutet och har testat med /index.php men inget blir bra... Antingen fungerar det inte alls eller så kommer felmeddelande 403/500 upp.

Medlem sedan juli 2002405 inlägg
#9

Märker genom Norton att jag får en "attack" också. IP-adressen är 127.0.0.1, dvs. mitt egna nätverkskort. Vad beror det på?

Medlem sedan mars 20032 667 inlägg
#10

Okey, då fungerade det inte som jag förväntade mig. Håller fortfarande på att lära mig detta själv. Testa följande regel istället då:

Options +FollowSymLinks
RewriteEngine On

RewriteRule .* index.php [L]

Regeln ska skicka vidare alla anrop till index.php.

Medlem sedan juli 2002405 inlägg
#11

Det fungerade inte :/ Felmeddelande 500 kommer upp bara. Även när jag bara skriver in domänen. Kanske har något med B-one att göra. De har ju inte alla funktioner påkopplade...

Medlem sedan mars 20034 471 inlägg
#12

Gör som Matte föreslår då...

Medlem sedan juli 2002405 inlägg
#13

aasah skrev:

Gör som Matte föreslår då...

Jo, får göra det. Men det är kanske hundra filer att lägga in den texten på och detta är bara tillfälligt. Sen ska man ju komma till den fil/mapp man skriver in och då blir det jobbigt att ta bort alla igen.

Medlem sedan mars 20034 471 inlägg
#14

filipbh skrev:

Jo, får göra det. Men det är kanske hundra filer att lägga in den texten på och detta är bara tillfälligt. Sen ska man ju komma till den fil/mapp man skriver in och då blir det jobbigt att ta bort alla igen.

Bättre idé:

Skaffa en fil som heter tex stopp.php med följande innehåll:

<?php
if ($_SERVER['PHP_SELF'] != '/index.php') { 
   header("Location: /"); 
   exit; 
} 
?>

Överst i dina 100 filer lägger du:

<?php 
include_once("stopp.php"); //Fast med absolut sökväg
?>

Alternativt, om du har en headerfil av något slag som redan inkluderas högst upp i dessa filer, lägg denna include högst upp i den i stället.

När du sedan vill öppna för filerna kan du ändra i stopp.php ==> vips ändrades det för dina 100 filer på en gång. Och om du bestämmer dig för att, i framtiden någon gång, reglera vad man får se mha av sessioner istället tex så ändrar du bara i stopp.php, och det slår igenom överallt.

Medlem sedan juli 2002405 inlägg
#15

Det är ju ett sätt det också. Men får ju ändå göra en sån include i alla filer men men. Det får gå.

Medlem sedan mars 20034 471 inlägg
#16

filipbh skrev:

Det är ju ett sätt det också. Men får ju ändå göra en sån include i alla filer men men...

Fördelen är att du bara behöver göra det en gång.

Medlem sedan juli 2002405 inlägg
#17

Ja, på det sättet är det ju bra. Jag får nöja mig så länge. Vet inte vilken kod jag ska acceptera bara men jag tar din som är senast..

Medlem sedan mars 20032 667 inlägg
#18

Det verkade fungera vid min korta testning. Kan hända att det är en konfiguering i Apache som gör att det inte fungerar hos dig.

Medlem sedan juli 2002405 inlägg
#19

Får prata med B-one... Men då vet jag det om jag lägger upp koden på egen server.

Medlem sedan nov. 20051 inlägg
#20

B-One

B-Onse har stängt av denna funktion : Options +FollowSymLinks
Och jag frågasat varför den var inte efter frågad sa dom.
Ja vad säger man

M v h

Mattias

262 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
131 ms — hämta tråd, inlägg och bilagor (db)
128 ms — ändringar (db)