View Full Version : Omredigera katalog till PHP
Hur omredigerar jag så att alla sökningar i en viss katalog kommer till mitt PHP-skript?
I PHP-skriptet vill jag veta vilken länk besökaren kom igenom och länken ska inte ändras utan Apache ska köra skriptet med en gång.
Går det att lösa?
------------------
/mvh Swey
Programmera PHP (http://php.webforum.nu)
Vad menar du med "sökningar"?
------------------
Robban < robban@lipogram.com >
Aha, nu tror jag att jag följer dig. Du vill alltså att alla förfrågningar om dokumet i en katalog skall gå till ett och samma PHP-script? T.ex. om besökaren begär http://www.foo.com/bar/foobar.html så skall denne osynligt skickas till ett PHP-script i stället?
Jo det går, om modulen mod_rewrite är laddad. Tyvärr tror jag inte så är fallet när det gäller webForum dock (mod_rewrite inkluderas inte vid en standardinstallation).
Men om mod_rewrite är laddad är det inga problem. Man lägger bara en .htaccess i den aktuella katalogen med följande innehåll:
RewriteEngine on
RewriteRule (.*) /path/to/script.php [L]
I script.php finns sedan omgivningsvariablerna $HTTP_REFERER och $REQUEST_URI bevarade, så man kan få fram vilken sida som efterfrågades, och varifrån besökaren länkats.
Är det något åt det hållet du är ute efter?
Mer information finns i dokumenationen för Apache (http://www.apache.org/docs/mod/mod_rewrite.html).
Kom på att du troligen skulle kunna använda 'ErrorDocument 404' för att få en liknande effekt. D.v.s. om dokumentet /bar/foobar.html inte existerar så omdirigerar du till script.php. Då skulle du klara dig utan mod_rewrite. Variablerna $HTTP_REFERER och $REQUEST_URI finns bevarade även i det fallet.
------------------
Robban < robban@lipogram.com >
[Redigerat av Robban den 05 jul 2000]
Tack Robban,
Hm... det där lät komplicerat.
Jag vill ju inte ha något 404. Då visar t.ex. IE sitt egna felmeddelande istället.
Allt jag ville var ju att man skulle komma till mitt skript om man befann sig i en katalog oavsett vilken underkatalog eller fil man anropar.
Hmm...
------------------
/mvh Swey
Programmera PHP (http://php.webforum.nu)
Då visar t.ex. IE sitt egna felmeddelande istället.
Eh, njae. Det gör den ju bara om den får "404 Not Found" som statusmeddelande. När jag provar på min server skickar Apache som vanligt "200 OK", och då skall ju inte IE reagera på något annat sätt än att visa sidan som vanligt? Vill du vara säker på att "200 OK" skickas kan du ju inleda din PHP-sida med:
header ("HTTP/1.0 200 OK");
Det där med att IE visar egna felmeddelanden går att komma runt f.ö. Det gäller bara att göra dokumentet stort nog (IE visar bara sitt egna felmeddelande om den sida servern skickar ligger under ett visst antal kB - kommer inte ihåg var gränsen går). Men i det här fallet bör inte detta bli ett problem som sagt.
Annars får du nog be någon admin att denne kompilerar om Apache med mod_rewrite aktiverat (alt. bara aktiverar mod_rewrite, utan att kompilera om, utifall Apache är kompilerad med stöd för DSO (http://www.apache.org/docs/dso.html)).
------------------
Robban < robban@lipogram.com >
vBulletin® v3.8.6, Copyright ©2000-2013, Jelsoft Enterprises Ltd.