Puncte:0

Eliminați atât index.php, cât și extensia de fișier pe alte pagini php folosind .htaccess

drapel cn

Aș dori să elimin necesitatea de a include index.php în link-urile mele. În loc de

example.com/about/index.php

Mi-ar plăcea să fie

example.com/despre/

În al doilea rând, aș dori și alte pagini care nu sunt indexate să fie navigabile fără extensia de fișier .php din url. În loc de

example.com/about/who_we_are.php

Mi-ar plăcea să fie

example.com/about/who_we_are

Nu am noroc să le fac ambele să lucreze simultan. Iată ce am în fișierul meu .htaccess:

Opțiuni -Indici
DirectoryIndex index.php index.htm index.html
RewriteEngine Pornit
RewriteCond %{SERVER_PORT} 80
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{HTTP_HOST} ^www.example.com [NC]
RewriteRule ^(.*)$ https://example.com/$1 [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

În prezent, elimină .php din paginile non-index, dar toate paginile index ale directorului sunt redirecționate către pagina de pornire.

ce fac greșit?

Puncte:0
drapel cn

La scurt timp după ce am postat această întrebare, am găsit o soluție la această problemă.

# eliminați .php; utilizați THE_REQUEST pentru a preveni bucle infinite
RewriteCond %{HTTP_HOST} ^www\.example\.com
RewriteCond %{THE_REQUEST} ^GET\ (.*)\.php\ HTTP
RewriteRule (.*)\.php$ $1 [R=301]

# eliminați indexul
RewriteRule (.*)index$ $1 [R=301]

# eliminați slash dacă nu directorul
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /$
RewriteRule (.*)/ $1 [R=301]

# adăugați .php pentru a accesa fișierul, dar nu redirecționați
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteCond %{REQUEST_URI} !/$
RewriteRule (.*) $1\.php [L]

Sper că acest lucru va ajuta pe oricine altcineva care caută o soluție la această problemă.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.