/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Venlige URLS?
Fra : Stig Sørensen


Dato : 01-03-09 11:36

Hej gruppe.

Jeg har en dynamisk side, feks:

minside.dk/index.php?id=4

Hvor 'id' bliver læst og fra en mySQL database bliver indholdet hentet
frem og vist på siden.

Men mit problem er at det ikke just ser godt ud.

Jeg havde så tænkt mig at tilføje en ekstra kolonne i mySQL databasen,
feks. "id_tekst".
I den kunne jeg så 'navngive' siderne, feks: "nybegynder-i-php"

Så kunne jeg kalde siden frem med:

minside.dk/index.php?id=nybegynder-i-php

(where id_tekst = '$id')

Men jeg synes stadig ikke det ser godt ud. Jeg vil gerne fjerne ?id=

Så det feks. blev: minside.dk/artikler/nybegynder-i-php

Men hvordan går man egentligt dette?

En hurtig grundig forklaring i konceptet vil nok hjælpe mig godt på
vej, eller måske et link til en god artikel der forklarer dette? Må
gerne være engelsk.


På forhånd tak.

Mvh
Stig

 
 
Stig Sørensen (01-03-2009)
Kommentar
Fra : Stig Sørensen


Dato : 01-03-09 13:35

Jeg har nu Googlet som en sindsyg og fundet mange artikler, men intet
hjælper mig.

Jeg bruger Arch Linux og har Apache+PHP+mySQL installeret.


Jeg opretter en .htaccess med

RewriteEngine On
RewriteRule /artikler/([0-9]+) artikler.php?id=$1

Som jeg har fundet i flere artikler efterhånden.

artikler.php findes.

Virker ikke.

Har også prøvet:

RewriteEngine On
RewriteRule ^artikler/([0-9]+) artikler.php?id=$1


Heller ikke.

Jeg tror det har noget med min user_dir at gøre, men selvom jeg
angiver den relative sti: /home/bruger/public_hmtl etc.. virker det
ikke.

Jeg er godt nok lost

Martin Larsen (02-03-2009)
Kommentar
Fra : Martin Larsen


Dato : 02-03-09 10:31

Hej Stig

> Jeg opretter en .htaccess med
>
> RewriteEngine On
> RewriteRule /artikler/([0-9]+) artikler.php?id=$1

Når du bruger mod_rewrite i en .htaccess skal du ikke have den
foranstillede skråstreg med.

Desuden fanger din regex ikke andet end url'er i formen
/artikler/123456, altså kun cifre.

En regulært udtryk som fanger dit eksempel /artikler/nybegynder-i-php
kunne være:

RewriteRule ^artikler/([\w-]+)$ index.php?id=$1

Hilsen
Martin

Stig Sørensen (01-03-2009)
Kommentar
Fra : Stig Sørensen


Dato : 01-03-09 13:39

Det virker hos min webhost.. Der kunne jeg lige have sparet mig selv
for et par timers bøvl


Hvorfor det ikke virker på min Linux spand fatter jeg ikke helt, men
det er nok noget med user_dir der driller.

Martin Larsen (02-03-2009)
Kommentar
Fra : Martin Larsen


Dato : 02-03-09 09:49

Stig Sørensen wrote:

> Hvorfor det ikke virker på min Linux spand fatter jeg ikke helt, men
> det er nok noget med user_dir der driller.

Har du tjekket om mod_rewrite fungerer på din spand?

Martin

Martin (02-03-2009)
Kommentar
Fra : Martin


Dato : 02-03-09 10:23

Stig Sørensen wrote:
> Det virker hos min webhost.. Der kunne jeg lige have sparet mig selv
> for et par timers bøvl
>
>
> Hvorfor det ikke virker på min Linux spand fatter jeg ikke helt, men
> det er nok noget med user_dir der driller.

For at det skal virke skal følgende være opfyldt
I apache opsætningen skal der

1: AllowOverride skal være sat til All (eller mindre kan sikkert også
gøre det, men ved none (som er standard) vil det fejle) i <Directory>

Led efter

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride xxxxx


2: mod_rewrite skal være aktivt (rewrite_module). Altså noget ala
LoadModule rewrite_module modules/mod_rewrite.so


3: AccessFileName skal selvfølgelig være .htaccess hvis man ellers ikke
ønsker at bruge et andet filnavn.

Martin (02-03-2009)
Kommentar
Fra : Martin


Dato : 02-03-09 10:23

Stig Sørensen wrote:
> Det virker hos min webhost.. Der kunne jeg lige have sparet mig selv
> for et par timers bøvl
>
>
> Hvorfor det ikke virker på min Linux spand fatter jeg ikke helt, men
> det er nok noget med user_dir der driller.

For at det skal virke skal følgende være opfyldt
I apache opsætningen skal der

1: AllowOverride skal være sat til All (eller mindre kan sikkert også
gøre det, men ved none (som er standard) vil det fejle) i <Directory>

Led efter

#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride xxxxx


2: mod_rewrite skal være aktivt (rewrite_module). Altså noget ala
LoadModule rewrite_module modules/mod_rewrite.so


3: AccessFileName skal selvfølgelig være .htaccess hvis man ellers ikke
ønsker at bruge et andet filnavn.

N/A (02-03-2009)
Kommentar
Fra : N/A


Dato : 02-03-09 09:49



Dan Storm (02-03-2009)
Kommentar
Fra : Dan Storm


Dato : 02-03-09 11:12

Stig Sørensen skrev:
> Så det feks. blev: minside.dk/artikler/nybegynder-i-php
>
> Men hvordan går man egentligt dette?
>

Et forslag der drejer dig væk fra server manipulation gennem .htaccess
og kontrol af korrekt httpd.conf opsætning?

Brug $_SERVER["PATH_INFO"] til at se hvilken vej du går.

Eksempel:
artikler.php:
<?php
$article = substr($_SERVER["PATH_INFO"], 1);
echo $article;
?>

Tilgå http://example.org/artikler/nybegynder-i-php
Siden skulle gerne outputte:
nybegynder-i-php

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Martin Larsen (02-03-2009)
Kommentar
Fra : Martin Larsen


Dato : 02-03-09 11:37
Dan Storm (02-03-2009)
Kommentar
Fra : Dan Storm


Dato : 02-03-09 12:31

Martin Larsen skrev:
> Dan Storm wrote:
>
>> Tilgå http://example.org/artikler/nybegynder-i-php
>
> Mener du ikke:
>
> http://example.org/artikler.php/nybegynder-i-php ?

Skal jeg ikke kunne sige; min opsætning tillader både med og uden .php.
Det samme gør serverne ude i firmaet - som er sat op uafhængigt af hinanden.

Der er jo ikke noget i vejen for at prøve.

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Dan Storm (02-03-2009)
Kommentar
Fra : Dan Storm


Dato : 02-03-09 12:47

Dan Storm skrev:
> Skal jeg ikke kunne sige; min opsætning tillader både med og uden .php.
> Det samme gør serverne ude i firmaet - som er sat op uafhængigt af
> hinanden.
>
> Der er jo ikke noget i vejen for at prøve.
>

En hurtig test indikerer at det er en feature i apache2. apache 1.3 kan
ikke løse opgaven uden at konfigurere det for den enkelte fil.

Der er dog ikke noget i apache2.conf der tyder på man kan slå featuren fra.


--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Søg
Reklame
Statistik
Spørgsmål : 177458
Tips : 31962
Nyheder : 719565
Indlæg : 6408169
Brugere : 218881

Månedens bedste
Årets bedste
Sidste års bedste