htaccess
Houdie!
Hoe kan ik met htaccess alle tekens redericten de volgende code:
([^/.]+) pakt ze bijna allemaal, maar een . niet, verder weet niet welke maar die . is juist belangrijk bij deze rederict ;P
Toevoeging op 04/01/2017 19:12:51:
Maar als de punt aan het einde staat, pakt die hem wel
Hoe kan ik met htaccess alle tekens redericten de volgende code:
Code (php)
1
RewriteRule ^paneel/profiel/([^/.]+)/?$ paneel/pages/profiel.php?gebruikersnaam=$1 [NC,L]
([^/.]+) pakt ze bijna allemaal, maar een . niet, verder weet niet welke maar die . is juist belangrijk bij deze rederict ;P
Toevoeging op 04/01/2017 19:12:51:
Maar als de punt aan het einde staat, pakt die hem wel
Waarom staat die . dan in je regex als je deze juist wel wil matchen?
Probeert deze - regexr
Wat is een regex en hoe werkt het? Ik ben niet bepaald bekend met htaccess
Gewijzigd op 04/01/2017 19:22:33 door - Rob -
Waarom delegeer je niet een URL in stappen naar het uiteindelijke script?
Stuur alle URLs in eerste instantie door naar index.php.
Ontleed de URL verder in index.php, waarbij je bijvoorbeeld besluit dat alles van de vorm paneel/profiel afgehandeld wordt door het bijbehorende script (paneel/profiel.php) alwaar je het derde deel van de URL verder inspecteert om na te gaan welke gebruiker het betreft.
Alleen de tweede alinea hierboven hoeft een rewriterule in .htaccess te zijn, de rest kan door code afgehandeld worden.
Dit voorkomt ook dat je .htaccess op den duur een onleesbare brei aan rewriterules bevat.
Stuur alle URLs in eerste instantie door naar index.php.
Ontleed de URL verder in index.php, waarbij je bijvoorbeeld besluit dat alles van de vorm paneel/profiel afgehandeld wordt door het bijbehorende script (paneel/profiel.php) alwaar je het derde deel van de URL verder inspecteert om na te gaan welke gebruiker het betreft.
Alleen de tweede alinea hierboven hoeft een rewriterule in .htaccess te zijn, de rest kan door code afgehandeld worden.
Dit voorkomt ook dat je .htaccess op den duur een onleesbare brei aan rewriterules bevat.
https://nl.wikipedia.org/wiki/Reguliere_expressie
Het is een manier om patronen te beschrijven zodat een script of programma daarop kan zoeken.
Het is een manier om patronen te beschrijven zodat een script of programma daarop kan zoeken.
Oké, bedankt. Ik snap het nu meer. Maar Hoe kan ik mijn htacces werkend maken zodat alle tekens gebruikt kunnen worden?
Jij maakt dus graag per pagina een regel in je .htaccess aan?
Als je met een vaste landingpagina-script werkt, en dus met een index.php, dan zou deze .htaccess zeker helpen:
Als je met een vaste landingpagina-script werkt, en dus met een index.php, dan zou deze .htaccess zeker helpen:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<IfModule mod_rewrite.c>
# Index'es uitzetten, en FollowSymLinks aanzetten
Options -Indexes
Options +FollowSymLinks
# Alles doorsturen naar de index, en daar alles afhandelen. Bestaande directory's en bestanden worden dan genegeerd.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
# Index'es uitzetten, en FollowSymLinks aanzetten
Options -Indexes
Options +FollowSymLinks
# Alles doorsturen naar de index, en daar alles afhandelen. Bestaande directory's en bestanden worden dan genegeerd.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
Ik werk niet met een vaste landingpagina-script..
Toevoeging op 04/01/2017 19:51:30:
I think so XD
Toevoeging op 04/01/2017 19:57:54:
Toevoeging op 04/01/2017 19:51:30:
Quote:
Jij maakt dus graag per pagina een regel in je .htaccess aan?
I think so XD
Toevoeging op 04/01/2017 19:57:54:
Quote:
Maar Hoe kan ik mijn htacces werkend maken zodat alle tekens gebruikt kunnen worden?
Misschien eens nadenken om hierop over te stappen ;-)?
Maar wat is het voordeel daarvan dan?
Minder rewrite-rules, betere controle over je URL's.
Oke, Heb je toevallig een voorbeeldje liggen? Met landingspagina want bij mij werkt het niet
Toevoeging op 04/01/2017 20:09:08:
Dan verandert link wel, maar verandert content niet
Toevoeging op 04/01/2017 20:09:08:
Dan verandert link wel, maar verandert content niet
Je moet wel je URL uitlezen op je index.php.
Ikzelf gebruik deze:
In de array van $param staan alle waardes die tussen de slashes staan.
Ikzelf gebruik deze:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
// URL splitting
$path = substr($_SERVER['REQUEST_URI'], strlen(dirname($_SERVER['SCRIPT_NAME'])));
$param = explode('/', trim($path, '/'));
// strip querystring from array
$elem = array_pop($param);
$pos = strpos($elem,'?');
if(!$pos){
//array seems good ? element can't be found en we pull'em back
$param[] = $elem;
}else if($pos > 0){
//there's something for the question mark. Put off the first piece.
$param[] = substr($elem,0,$pos);
}
?>
// URL splitting
$path = substr($_SERVER['REQUEST_URI'], strlen(dirname($_SERVER['SCRIPT_NAME'])));
$param = explode('/', trim($path, '/'));
// strip querystring from array
$elem = array_pop($param);
$pos = strpos($elem,'?');
if(!$pos){
//array seems good ? element can't be found en we pull'em back
$param[] = $elem;
}else if($pos > 0){
//there's something for the question mark. Put off the first piece.
$param[] = substr($elem,0,$pos);
}
?>
In de array van $param staan alle waardes die tussen de slashes staan.
Gewijzigd op 04/01/2017 20:16:58 door - Ariën -
Hoe doe ik dat?
Zie edit ^
- Ariën - op 04/01/2017 20:12:43:
Je moet wel je URL uitlezen op je index.php.
Ikzelf gebruik deze:
<snip>
Ikzelf gebruik deze:
<snip>
En alleen als de HTTP methode is GET - andere soorten HTTP methoden
N.B. - hedendagen gebruiken ontwikkelaars AJAX (verbeterde UX)
AJAX een middel, en geen doel. Ik zie helaas toch vaak dat AJAX onnodig gebruikt wordt terwijl het prima anders kan. Ook een pagina-systeem met een 'single-point-entry' kan prima zonder AJAX worden gebruikt.
Ikzelf gebruik AJAX alleen als ik a-synchroon data wil ophalen zonder dat je page-refreshes wilt hebben.
Ikzelf gebruik AJAX alleen als ik a-synchroon data wil ophalen zonder dat je page-refreshes wilt hebben.
Gewijzigd op 05/01/2017 12:53:18 door - Ariën -
@Ariën mogelijk is het gebruik van parse_url() makkelijker dan wat je hierboven doet.
@Thomas: Zou inderdaad geen slecht idee zijn, deze code zit al een tijdje in een van mijn CMS'en.




