Avatar billede Hans1 Praktikant
16. februar 2012 - 17:57 Der er 10 kommentarer og
1 løsning

viderstilning ved skråstreg

Hej

Jeg prøver at bygge en kode som viderstiller brugeren hvis der er skråstreg(er) efter den på gældende side i addresselinien.

Fx

domæne.dk/side/ viderstiller til domæne.dk/side
domæne.dk/side/// viderstiller til domæne.dk/side

Har prøvet med dette men den looper bare når der er skåstreg til side/side/side/side/side...


<?php
$string = $_SERVER['REQUEST_URI'];
$string2 = substr($string, 1);
$string3 = rtrim($string2,"/");
if (preg_match('~/~', $string2)) {
header("Location: $string3");
}
?>
Avatar billede danco Nybegynder
16. februar 2012 - 18:03 #1
Mon ikke det ville være en bedre løsning og overveje at lave det via htaccess.
Som jeg forstår det er dette udelukkende for syns skyld.
Avatar billede Hans1 Praktikant
16. februar 2012 - 18:07 #2
Det ville det nok.
Det må gerne være via htaccess.
Jeg har faktisk prøvet med dette men kunne heller ikke få det til at virke med dette.
Avatar billede olebole Juniormester
16. februar 2012 - 18:09 #3
<ole>

<?php
$string = $_SERVER['REQUEST_URI'];
$string2 = substr($string, 1);
$string3 = rtrim($string2,"/");
if (preg_match('#\/$#', $string2)) {
    header("Location: $string3");
}
?>

- men det lyder som noget for mod_rewrite. Det kan så give andre sære resultater, men udfra spørgsmålet er det svært at sige, hvad der præcist bør gøres.

/mvh
</bole>
Avatar billede Hans1 Praktikant
16. februar 2012 - 18:33 #4
Den fjerner godt nok skråstregerne med denne kode:


RewriteEngine On
RewriteRule ^(.+)/$  /$1 [R=301,L]


Men jeg jeg får 404 siden blev ikke fundet.
Avatar billede olebole Juniormester
16. februar 2012 - 18:38 #5
Har du prøvet #3?
Avatar billede Hans1 Praktikant
16. februar 2012 - 20:24 #6
Ja det gør den. Tak.
Avatar billede Hans1 Praktikant
17. februar 2012 - 13:04 #7
Hej igen

Er det muligt at bruge GET funktion i stedet for at man SKAL have en fil med navnet på siden?


RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]
Avatar billede olebole Juniormester
17. februar 2012 - 16:02 #8
Den forstod jeg ikke  =)
Avatar billede Hans1 Praktikant
17. februar 2012 - 16:34 #9
Okay, prøver igen.

Kan følgende 3 ting laves ved kun at benytte .htaccess?

1. Sider skal kunne tilgås uden filendelser: domæne.dk/side
Eksempel: Ovenstående skal ikke pege på filen side.php (som koden i post #7 gør) men en skjult GET variabel (?page=side)

2. Hvis der indtastes en eller flere skråstreger i adressen fjernes disse automatisk.
Eksempel: domæne.dk/side/ viderstilles til domæne.dk/side
Eksempel2: domæne.dk/side////// viderstilles til domæne.dk/side

3. Man skal kunne have GET variabler i adressen selv om der ikke er php filendelse på.
Eksempel: domæne.dk/side?action=add
Avatar billede olebole Juniormester
17. februar 2012 - 17:32 #10
Det er ikke htaccess, der gør noget. Det er Apache modulet mod_rewrite, som du (tilfældigvis) bruger genne htaccess  *o)

Ja, du kan en masse med mod_rewrite. Brug Eksperten, som sitet er tænkt  =)
Avatar billede Hans1 Praktikant
05. marts 2012 - 11:00 #11
Jeg har fået løst problemet ved hjælp af følgende kode.
Den opfylder alle krav til kravene i post #9


RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [R=301,L]


Når jeg skal have en ny side opretter jeg blot en php fil med tilsvarende navn: fx kontakt.php
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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