Slashes in .htaccess

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mike Visser

Mike Visser

01/03/2018 12:26:42
Quote Anchor link
Wie kan mij vertellen hoe ik dit correct voor elkaar krijg , heb het nu een paar keer geprobeerd of het werkt niet of ik krijg een server error

Adding or removing a trailing slash to all URLs

www.website.nl/ledenlijst/

ik heb dus een 301 redirect nodig..
Gewijzigd op 01/03/2018 12:35:53 door Ward van der Put
 
PHP hulp

PHP hulp

26/12/2024 07:44:38
 
Ward van der Put
Moderator

Ward van der Put

01/03/2018 12:36:05
 
Mike Visser

Mike Visser

01/03/2018 13:36:27
Quote Anchor link
Ok dus als ik het goed begrijp zou alles nu met en zonder slash moeten werken op het domein via in .htacces

RewriteCond %{REQUEST_URI} !\.[^./]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.domain.co.uk/$1/ [R=301,L]

Alleen werkt het niet

www.website.nl/ledenlijst/ werkt wel

www.website.nl/ledenlijst werkt niet..

Toevoeging op 01/03/2018 13:38:51:

Ik heb het volgende staan in mijn htacces

RewriteEngine On
RewriteCond %{HTTP_HOST} ^website\.nl [NC]
RewriteRule ^(.*)$ http://www.website.nl/$1 [L,R=301]
RewriteCond %{REQUEST_URI} !\.[^./]+$
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://www.website.nl/$1/ [R=301,L]
 
Thomas van den Heuvel

Thomas van den Heuvel

01/03/2018 16:07:42
Quote Anchor link
Andere vraag: waarom zou je dit willen forceren? Wanneer je je navigatie binnen je site consequent opzet, en iedereen gewoon van deze navigatie gebruik maakt dan kun je toch nooit van de gebaande paden afraken?

Wat gebeurt er normaal als een URL niet bestaat? Dan krijg je een foutmelding dat de pagina niet bestaat (404). Waarom zou dat hier anders moeten zijn?

Als dit vanwege zoekmachinestatistieken is, dat je niet aparte charts wilt voor /pagina (zonder slash) en /pagina/ (met slash) ofzo, laat gewoon het request wat niets oplevert een 404 pagina serveren?

Als dit vanwege gebruikersgemak is (al kan ik mij niet voorstellen hoe het handmatig inkloppen van wat in wezen een verkeerde URL is handig is): accepteer gewoon beide, serveer met /pagina of /pagina/ gewoon dezelfde pagina. Maar misschien is dat een minder goede oplossing.

Een URL is goed of fout. Ik zou verkeerde URL's niet proberen te repareren.
 
Mike Visser

Mike Visser

01/03/2018 17:21:31
Quote Anchor link
Ik snap wat je bedoelt nu levert het al een 404 pagina op daar wil ik juist vanaf..
 
Michael -

Michael -

01/03/2018 18:00:56
Quote Anchor link
Zet een vraagteken achter de slash dan mag deze wel of niet aanwezig zijn.
RewriteRule ^pagina/?$ pagina.php [L]
www.website.nl/pagina en www.website.nl/pagina/ verwijzen naar www.website.nl/pagina.php
 
Thomas van den Heuvel

Thomas van den Heuvel

01/03/2018 19:24:07
Quote Anchor link
Mike Visser op 01/03/2018 17:21:31:
Ik snap wat je bedoelt nu levert het al een 404 pagina op daar wil ik juist vanaf..

Maar hoe kom je dan in eerste instantie op zo'n pagina terecht? Als je dat kunt voorkomen loop je in eerste instantie niet tegen dit probleem aan?
 
Mike Visser

Mike Visser

01/03/2018 19:33:17
Quote Anchor link
Dat klopt thomas maar dat is niet wat ik vraag , als het werkt zal ik het uitleggen :)

Toevoeging op 01/03/2018 19:36:38:

Michael bedankt voor je reactie maar zo ver was ik ook al alleen eindigen op .php is niet echt seo vriendelijk al mijn urls zijn nu bijv.

www.website.nl/pagina/
www.website.nl/registreren/
www.website.nl/inloggen/
www.website.nl/info/

Als men dan bijv de url ergens ziet staan en alleen www.website.nl/pagina knipt en plakt komen ze op een 404 error uit dat is natuurlijk niet netjes ...
 
- Ariën  -
Beheerder

- Ariën -

01/03/2018 19:52:20
Quote Anchor link
Je bedoelt dus dat je een "404 - Not Fuud" pagina krijgt van je webserver? Of een eigen gemaakte en gestylde 404 pagina?

Als je er eerste bedoeld, dan kanje met dit in je .htaccess een 404 pagina maken:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
ErrorDocument 404 /404.php


Verder heb je ook 401 Not Authorized, 403 No Access, 500 Internal Server Error
Gewijzigd op 01/03/2018 19:54:09 door - Ariën -
 
Thomas van den Heuvel

Thomas van den Heuvel

01/03/2018 19:52:56
Quote Anchor link
Zoals ik het zie maak je jouw website alleen maar complexer om ??? onbekende redenen ??? waarbij je fouten probeert te ondervangen waar je geen controle over hebt. Laat foute dingen gewoon fout gaan.

Desnoods maak je je 404 pagina wat vriendelijker ("bedoelde je soms pagina xyz?"), maar het lijkt mij niet verstandig te cateren voor dit soort dingen.

Interessanter is waarschijnlijk waar dit vandaankomt. Waarom komt iemand in eerste instantie op zo'n pagina terecht? Dan is er ofwel iets mis aan de navigatie waar je iets aan kunt doen of iemand is gewoon fanta URL's aan het inkloppen waar je niet zoveel aan doet.

It is hard to make anything idiot proof because idiots tend to be ingenious.
(Het is moeilijk om alles idiot proof te maken omdat idioten nogal vindingrijk zijn.)
 
Mike Visser

Mike Visser

01/03/2018 20:10:18
Quote Anchor link
Ik snap wat jullie allebij bedoelen maar helaas heb ik hier niets aan niet lullig bedoeld natuurlijk alle hulp en adviezen zijn welkom , maar als ik het zo wil doen aan de fanta urls inkloppingen moet ik dat toch zelf weten ... alleen werkt het niet met en of zonder /
 
Thomas van den Heuvel

Thomas van den Heuvel

01/03/2018 20:16:02
Quote Anchor link
Je zou dit probleem ook naar PHP kunnen verplaatsen (indien PHP ondersteund en gebruikt wordt). Meestal is het zo dat als je met zoekmachinevriendelijke URL's werkt je één voordeur hebt voor je applicatie: index.php. Daar zou je ook de rekensom kunnen uitvoeren door de URL te inspecteren. Eerst zou je kunnen controleren of het "applicatiepad" bestaat, en zoniet zou je nog een laatste poging kunnen doen die controleert of het niet bestaande ingevoerde pad zonder trailing slash wel bestaat, in welk geval je hier de 301 redirect uitvoert. Hier hoef je dus niet per se je .htaccess bestand mee te verontreinigen.

EDIT: of in geval je het niet uitmaakt of iets /pagina of /pagina/ is dan strip je in de PHP-code er gewoon de optionele trailing slash vantevoren af. Dit doe ik zelf ook.
Gewijzigd op 01/03/2018 20:20:36 door Thomas van den Heuvel
 
- Ariën  -
Beheerder

- Ariën -

01/03/2018 20:19:55
Quote Anchor link
Nee, inderdaad. Het moet gewoon werken of je nu wel of geen / gebruikt.
In dit artikel wordt overigens mod_rewrite goed uitlegd, plus dat er in deze paragraaf verteld wordt over hoe je trailingslash kan afhandelen:
https://www.phphulp.nl/php/tutorial/overig/mod-rewrite/536/flags-in-een-rewriterule/1377/

In dit geval voegen ze die standaard toe. Opzich maakt dit niet uit voor SEO.

Maar zoals Thomas zegt is een aparte voordeur voor je site via de index.php al een goed idee. Echter inbouwen is niet eenvoudig mits je de hele boel op de schop gooit. Daar heeft Thomas destijds ook een artikeltje over geschreven:
http://fangorn.thijma.nl/news/redirecting-all-requests-to-index-php-with-htaccess
Gewijzigd op 01/03/2018 20:26:38 door - Ariën -
 
Mike Visser

Mike Visser

02/03/2018 17:28:06
Quote Anchor link
Ok jongens ik ben er nog steeds mee bezig heb de mod rewrite van Arien nogmaals bekenen maar het wilt niet echt lukken ik ben weer back to basic hieronder staat het geen nu in mijn htacces.

RewriteEngine On
RewriteCond %{HTTP_HOST} ^maffiakartel\.nl [NC]
RewriteRule ^(.*)$ http://www.maffiakartel.nl/$1 [L,R=301]
ErrorDocument 404 /404.php

#Create friendly URL
RewriteRule ^registreren/$ signup.php [NC,L]
RewriteRule ^registreren/(.*)/$ signup.php?crimineeltje=$1 [NC,L]
RewriteRule ^screenshots/$ screenshots.php [NC,L]
RewriteRule ^Verhaallijn/$ Verhaallijn.php [NC,L]
RewriteRule ^wachtwoord-vergeten/$ vergeten.php [NC,L]
RewriteRule ^linkpartners/$ linkpartners.php [NC,L]
RewriteRule ^contact/$ contact.php [NC,L]
RewriteRule ^gebruikersnaam-vergeten/$ gbvergeten.php [NC,L]
RewriteRule ^prijzen/$ prijzen.php [NC,L]

Op het moment dat ik RewriteRule ga toevoegen werkt het nog steeds niet wie kan mij vertellen wat ik nu mis , in de tutorial word wel aangegeven dat je het zo moet gebruiken

RewriteRule ^registreren/(.*)$ registreren/ [R]
RewriteRule ^registreren/(.*)/$ signup.php [L]

Maar dan word ik terug gelinkt naar /domains/maffiakartel.nl/public_html/registreren/

Wie kan mij hierbij helpen , het is erg vervelend dat het niet zo gaat als het moet..
 
Thomas van den Heuvel

Thomas van den Heuvel

03/03/2018 01:05:40
Quote Anchor link
@Mike: is dit een spel wat je zelf aan het maken bent (en kun je zelf bepalen hoe dit in elkaar zit)? In dat geval loont het misschien de moeite om goed na te denken over de pagina-opbouw. Het ziet er nu namelijk naar uit dat je een heleboel "ingangen" hebt in je applicatie: elke pagina wordt geserveerd door een apart, standalone script. Dit zijn in principe allemaal voordeuren. En elke deur heeft (ten minste) een goed slot nodig. Ook als er eens een keer wat in de structuur verandert moet je mogelijk in meerdere scripts dezelfde aanpassing doen. Waarschijnlijk ziet een groot deel van deze scripts er inhoudelijk hetzelfde uit en dat is nou niet echt handig.

Het is veel makkelijker, handiger en veiliger om gewoon maar één voordeur in je applicatie te hebben, oftewel een "single point of entry": index.php. In dat script kun je tevens berekeningen uitvoeren die bepalen welke pagina geladen dient te worden. Dit is vele malen handiger en eenvoudiger dan in een .htaccess lopen te prutten.

Als je nu eens je .htaccess simpelweg gebruikt om alles door te schoppen naar index.php, en dat je daar de URL eens onder de loep neemt - eventueel kun je dan ook nog slashes strippen enzo, dus dan maakt het niet uit of je iets aanroept met /pagina of /pagina/. En vervolgens require je het juiste script. Easy as pie. Geen gezever meer in je .htaccess, je definieert zelf de regels in PHP.
Gewijzigd op 03/03/2018 01:06:12 door Thomas van den Heuvel
 
Mike Visser

Mike Visser

03/03/2018 01:19:12
Quote Anchor link
Hallo Thomas , dit is idd een spel wat ik zelf aan het maken ben waar ik in 2006 mee ben begonnen onder een andere naam toen een lange tijd gestopt en nu weer de draad opgepakt , maar er is verschrikkelijk veel verandert en ik liep wel een stuk achter , ik denk dat ik het idd zo ga maken zoals jij aangeeft , ingame gebruik ik al een soort gelijk systeem door alles te koppelen aan de index door middel van ?p= systeem

Thanks man ik ga er gelijk mee aan de slag :)
 
- Ariën  -
Beheerder

- Ariën -

03/03/2018 08:10:32
Quote Anchor link
Als je Thomas uitgelegde 'Single point of entry' methode gaat grbruiken, dan heb je eigenlijk geen $_GET meer nodig.
Als je zijn artikel volgt:


http://fangorn.thijma.nl/news/redirecting-all-requests-to-index-php-with-htaccess

Dan heb je $path.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.