sslug-teknik team mailing list archive
-
sslug-teknik team
-
Mailing list archive
-
Message #85648
Re: Engangs URL'er med Apache
On Mon, 14 Nov 2005 23:14:57 +0100 (CET)
Peter Toft <pto@xxxxxxxxxxx> wrote:
> On Mon, 14 Nov 2005, Kim Schulz wrote:
>
> > On Mon, 14 Nov 2005 00:58:17 +0100 (CET)
> > Peter Toft <pto@xxxxxxxxxxx> wrote:
> >
> > > Jeg har nu et par gange haft brug for at give en URL til noget
> > > som brugeren lige skal se på min webserver, men som ikke skal være
> > > permanent online.
> > >
> > > Kan man med Apache(+PHP) lave en "engangs-URL", hvor siden ikke på
> > > nogen måde kan reloades af samme eller en anden browser.
> > >
> >
> > jeg ville nok strikke et lille system sammen til det som binder en
> > url sammen med et id. denne relation smides så i en
> > database/textfil/whatever og når siden vises første gang så fjernes
> > den herfra.
> >
> > med en smule mod_rewrite magi kan du så få lavet så
> >
> > http://pto.linux.dk/12345 bliver omskrevet til
> > http://pto.linux.dk/min_hemmelige_side_med_id_12345.htm
> > og det er endda uden at brugeren kan se det.
> >
> > næste gang nogen besøger url'en så er id 12345 ikke i databasen
> > mere og en fejlside vises så i stedet.
> >
> > burde ikke kræve mere end et håndfuld linjer php samt en .htaccess
> > med lidt rewrite sjov.
>
> Jeps - men det er lidt noget administrativt øf, at man skal rode med
> httpd.conf og ikke kan lave det hos brugeren selv. Derfor havde jeg
> en ide med at generere en .htaccess efter første access, som skulle
> gå igennem et PHP-script.
>
> Det der undrer mig meget er at det ikke findes?!?
hvorfor ikke bare altid have en .htaccess liggende som rewriter anden
del af url til en id hvis filen ikke findes.
Derved kan du så redirecte til pto.linux.dk/?id=12345 uden at brugeren
ser det - på samme måde som når der laves søgemaskine venlige url'er.
Samme htaccess fil kan klare dette for alle url'er med noget ala:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+) /index.php?id=$1 [L]
så hvis man går ind på pto.linux.dk/1234
så omskrives den til pto.linux.dk/index.php?id=1234
index.php tjekker databasen for id=1234 og hvis den findes så
returneres url'en som er bundet til den id - ellers returneres en 404
eller lignende. findes 1234 så slettes den omgående fra databasen.
såfrem du rent faktisk har en fil eller en mappe som hedder 1234
liggende, så vil de 2 første regler i htaccess filen sørge for at du
ikke bliver redirected.
så længe du sørger for at index.php ikke viser url for det som skal
vises, så er du rimeligt sikker på at der vil virke efter hensigten og
ikke give brugeren info om hvilken fil der rigtigt vises.
Follow ups
References