WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Dölja .php med htaccess (https://www.wn.se/forum/showthread.php?t=37082)

SajtSnickaren 2009-05-27 23:24

Jag har fått hjälp av kille på nätet med att bygga en ordliste-sajt. På sajten finns det länkar (som leder till PHP-filer) som ser ut så här:
http://www.test.se/add/ (filen 'add.php' finns på servern)
http://www.test.se/browse/letter/k (filen 'browse.php' finns på servern)

Utvecklaren ger rådet att jag skapar en htaccess-fil och han gissar att den skall se ut något i stil med:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Tyvärr funkar detta inte. Får ett 403-meddelande:
"You don't have permission to access /add/ on this server"

Jag mailade då tillbaka och får detta svar:
"Jag har inte ngn separat .htaccess-fil utan har det i en apacheconfigfil. I den finns bara ”RewriteEngine on” (samt, såklart, massa övriga inställningar för apache. Det är det enda jag kan se som har med mod_rewrite att göra iaf). Du kan ju alltid testa att bara ha det i .htaccessfilen och se hur det går?"

Testade då att bara ha ”RewriteEngine on” i filen, men får samma fel.

Hoppas att någon med kunskap om 'mod_rewrite' kan hjälpa mig.

Jesper D 2009-05-28 07:48

Testa:

Options +FollowSymlinks
RewriteEngine on

RewriteRule ^/start/$ index.php [NC,L]

RewriteRule ^/medlemmar/$ medlemmar.php [NC,L]

O.s.v, ser du sambandet?

Jonas 2009-05-28 09:09

Du gör lite dubbelt arbete med din config.

Du talar inte om att den skall hantera kataloger som en fil, bara att filer som är *.php skall hanteras.

Kod:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/$ /$1_$2_$3.php [NC,L]
RewriteRule ^/([A-Za-z0-9_-]+)/([A-Za-z0-9_-]+)/$ /$1_$2.php [NC,L]
RewriteRule ^/([A-Za-z0-9_-]+)/$ /$1.php [NC,L]
</IfModule>

RewriteCond ovan är bra i detta fallet om man har JS, CSS mfl i andra kataloger som hämtas av klienten, för att förebygga att filerna går igenom PHP scripten.

SajtSnickaren 2009-05-28 13:39

Tack för snabba svar. Har testat utan större framgång:

1) Testat yehspers variant:
RewriteEngine on
RewriteRule ^/add/$ add.php [NC,L]

2) Och Jonas variant. Där testade jag även att ändra 'RewriteBase /' till 'RewriteBase /forkortningar.se/' eftersom koden ligger på webbhotellet Levonline där jag har flera olika domäner under public_html

Här ligger den fungerande koden som killen knackat ihop: http://abbr.orthogon.se/
Här är den på Levonline http://www.forkortningar.se/

Testar man http://www.forkortningar.se/add.php så visas rätt sida.

Gör jag något annat fel?
- Jag FTP:ar med ws_ftp i ASCII-format.
- Jag Chmod:ar inte om filen.

Jag vet att Rewrite funkar hos Levonline eftersom jag gjort andra Rewrite-tester som funkar.

greenio.se 2009-05-28 14:36

testade precis det här och det fungerade perfekt

Citat:


RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?([-a-z0-9_/]*)/?$ $1.php?args=$2 [QSA,L]

Är adressen då http://www.domän.se/test/massa/andra/argument så hamnar man på test.php, och så finns det då en get-variabel som heter args som innehåller allt efter det första snedstrecket. Kan man till exempel köra $args = explode('/',$_GET['args']); i php-filen sen om man vill ha en array med eventuella extra argument.

SajtSnickaren 2009-05-28 15:09

Testade även greenio.se förslag, men får fortfarande:
"You don't have permission to access /add/ on this server."

Det vore ju bra om åtminstone: http://www.forkortningar.se/add/ kunde fungera. Då skulle man kunna gå vidare till nästa steg i felsökningen.

greenio.se 2009-05-28 19:20

Citat:

Originally posted by SajtSnickaren@May 28 2009, 13:39
Jag vet att Rewrite funkar hos Levonline eftersom jag gjort andra Rewrite-tester som funkar.
Hmm, verkar som mod rewrite inte är på då. Skulle du kunna posta någon fungerande mod rewrite kod som har funkat på samma webbhotell här så kan vi utgå från den? Eftersom själva rewrite-delen är korrekt så är det nåt annat som är fel.

SajtSnickaren 2009-05-28 22:28

Här är ett fungerande exempel --> http://www.forkortningar.se/mime_test/page/software (testa byta ut 'software'):
Kod:

RewriteEngine on
RewriteRule ^page/([^/\.]+)/?$ index.php?page=$1 [L]

Index.php innehåller:
Kod:

<html>
  <head>
  <title>Second mod_rewrite example</title>
  </head>
  <body>
  <p>
    The requested page was:
    <?php echo $_GET['page']; ?>
  </p>
  </body>
</html>

Källa: http://www.workingwith.me.uk/article...ng/mod_rewrite

Jonas 2009-05-28 22:40

Lägg inte .htaccess i public_html utan i public_html/forkortningar.se/

public_html körs troligen inte .htaccess i.

greenio.se 2009-05-28 22:44

Hmm... det är inte så att de andra exemplen också fungerar i den undermapp du testar i nu?

Jag testade koden från din ursprungliga post också av intresse, och den funkar, klarar bara inte av ett avslutande slash eller några extra argument, men för forkortningar.se/add så ska den funka om mod rewrite funkar.


Alla tider är GMT +2. Klockan är nu 04:05.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson