2016-04-10 13 views
1
Hinter

Ich habe eine Datenbank von Artikeln mit dem URLs wie folgt:Griff Strich mit Codeigniter 3

person/albert-einstein/ (Schrägstrich)

person/albert-einstein/1 (kein Schrägstrich)

Und ich habe mich gefragt, was war der beste Weg, URL Schrägstriche in Codeigniter 3 zu behandeln?

Dies ist, was ich getan habe/Test bisher:

echo site_url('person/albert-einstein/'); # http://localhost/person/albert-einstein        
echo base_url('person/albert-einstein/'); # http://localhost/person/albert-einstein        
echo site_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1     
echo base_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1 

Dann bearbeitet ich config.php zu setzen:

$config['url_suffix'] = '/'; 

und wieder die Urls gedruckt:

echo site_url('person/albert-einstein/'); # http://localhost/person/albert-einstein/        
echo base_url('person/albert-einstein/'); # http://localhost/person/albert-einstein        
echo site_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1/    
echo base_url('person/albert-einstein/1'); # http://localhost/person/albert-einstein/1 

Jetzt Ich kann site_url() oder base_url() auswählen, um die URL mit Schrägstrich oder zu drucken ohne es. Aber jetzt auf meinen Ansichten muss ich sehr vorsichtig sein, welche ich benutze, und ich würde eher eine Funktion verwenden, die die URL respektiert, die ich passiere, und es mit einem Schrägstrich zurückgeben, wenn es einen hat oder nicht hinzufügt, wenn es nicht tut habe es.

Und ja, ich kann den Helfer definitiv erweitern und eine Funktion schreiben wie: print_url() das tut, was ich will, aber ich wollte sehen, ob es etwas gibt, das mir hier fehlt. Vielen Dank.

Antwort

0

können Sie Apache rewite Regel verwenden, zum Zwingen Schrägstrich:

RewriteCond %{REQUEST_URI} /+[^\.]+$ 
RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] 

schlepp Entfernen Slash Sie verwenden können:

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

ich verwendet, um dieses good base von .htaccess Schnipsel.

+0

Vielen Dank für Ihr Interesse an meiner Frage, aber denken Sie daran, dass ich "URLs" ** mit ** Schrägstrich und ** ohne ** Schrägstrich für verschiedene Abschnitte meiner Website verwenden. Deine Lösung mit 'mod_rewrite' passt also nicht wirklich zu dieser Frage, mein Freund. :-) – gglasses

+0

Ich folgte dieser Anfrage: "und ich würde lieber eine Funktion verwenden, die die URL respektiert, die ich übergebe und sie mit einem Schrägstrich zurückgebe, wenn sie eine hat oder nicht hinzufügt, wenn sie sie nicht hat". Erstes Snippet erlaubt es. – Tpojka