Avatar billede d3c Nybegynder
19. november 2006 - 15:05 Der er 6 kommentarer og
2 løsninger

Rewriting: én linje for hver URL

Hej eksperter,

I øjeblikket rewriter jeg mine URLs manuelt. Det vil sige, at jeg har én linje i .htaccess for hver URL. Eksempel:

RewriteRule ^test/kamera$ /test_cam.php
RewriteRule ^test/mobil$ /test_cell.php
RewriteRule ^test/computer$ /test_comp.php
RewriteRule ^konkurrence$ /contest.php

Kunne det laves smartere, således at alle URLs blev redirected til en .php-fil, som redirectede videre?

Mvh,
Christian
Avatar billede Slettet bruger
19. november 2006 - 15:23 #1
Det kan du sagtens. Du kan smide det som en variabel i adresselinien:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-F
RewriteRule ^([^\?]+)? /index.php?pages=$1&%{QUERY_STRING}
Avatar billede Slettet bruger
19. november 2006 - 15:23 #2
Så er det (i php, om ikke andet) $_GET['pages'] du skal undersøge, for at finde ud af hvilken side der skal vises.
Avatar billede d3c Nybegynder
19. november 2006 - 16:29 #3
Ja, men vil det hjælpe rent performance mæssigt? De RewriteRules jeg skrev, er blot et eksempel. I virkeligheden drejer det sig om et større website med en masse URLs der skal rewrites.
Avatar billede Slettet bruger
19. november 2006 - 17:30 #4
Jeg kan ikke sige om performance bliver bedre, men du får et meget større overblik og din kontrol over siden bliver meget større.

Ligeledes vil det være lettere at oprette eller slette sider hvis du omlægger din serverstruktur til ovenstående, da du herved ikke manuelt skal ændre i .htaccess.
Avatar billede d3c Nybegynder
19. november 2006 - 17:41 #5
Omvendt skal jeg vel manuelt redigere i PHP-filen for at tilføje sider?
Avatar billede Slettet bruger
19. november 2006 - 17:53 #6
Det afhænger igen af din struktur. Du kan sagtens kalde dine filer navne, der dynamisk kan findes i (i dette tilfælde) index.php

eksempelvis kan dine server-filer kaldes test_mobil.php, test_computer.php osv., så kan du finde siden vha. (simplificeret):

<?php
if(!empty($_GET['pages'])) {
  if(file_exists('pages/test_' . $_GET['pages'] . '.php')) {
    require('pages/test_' . $_GET['pages'] . '.php');
  } else {
    die("Du må ikke ændre i adresselinien !");
  }
} else {
  header("Location: /kamera");
}

?>
Avatar billede d3c Nybegynder
02. december 2006 - 14:38 #7
Det hjalp ikke rigtigt... Men du får lidt point alligevel for at forsøge ;-)
Avatar billede Slettet bruger
02. december 2006 - 17:30 #8
Tak skal du have, men det bør have hjulpet ! :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Uanset kodesprog, så giver vi dig mulighederne for at udvikle det, du behøver.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester