Puncte:1

ErrorDocumentul și linkurile fără extensii nu funcționează împreună

drapel cn

Pe site-ul meu, am următorul cod pentru a omite extensia paginilor php

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Am adăugat și acest cod pentru a afișa paginile personalizate 404

ErrorDocument 404 /404

Ambele funcționează independent, dar nu atunci când sunt utilizate împreună.Când vizitez un link fals ca www.mydomain.com/pagethatdontexist, vreau să văd pagina mea 404, în schimb văd o eroare File not found, care cred că vine de la server, așa că primesc un 404 pe 404 aparent.

Am încercat să mă mut ErrorDocument deasupra și dedesubt codul de eliminare a extensiei, încercat /404.php de asemenea. De asemenea, am încercat să creez o excepție pentru 404 like

RewriteCond %{REQUEST_URI} !^/404.php$ [NC]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^\.]+)$ $1.php [NC,L]

Nimic nu funcționează.

Editare: Când codul de extensie este eliminat și vizitez www.mydomain.com/pagethatdontexist Îmi văd pagina 404. Dar dacă mă vizitez www.mydomain.com/pagethatdontexist.php Văd o eroare neîntemeiată a fișierului nu a fost găsit de pe server. Poate că poate da un indiciu despre ce se întâmplă.

Puncte:0
drapel cn

Cred că expresia regex nu se potrivește cu ceea ce vrei. Cu următoarele, sunt capabil să mă ocup de adrese URL precum:

  • /pagina mea
  • /mypage/myid

Regex:

    RewriteEngine On # Activer le module Rescrie
    RewriteRule ^/(\w+)\/?$ /$1.php [NC,L]
    RewriteRule ^/(\w+)\/(\d+)$ /$1.php?id=$2
Puncte:0
drapel kz

Bănuiesc că ești pe un server LiteSpeed, nu pe Apache? Acest lucru ar trebui să „funcționeze” pe Apache, dar nu pe LiteSpeed ​​din cauza felului în care sunt variabilele de server nu actualizate între cererile interne.

Cu toate acestea, nu este nevoie (și nu ar trebui) să omiteți extensia de fișier de pe fișierul ErrorDocument directivă în sine. Adresele URL fără extensie sunt „cosmetice” pentru utilizatori. ErrorDocument este complet ascuns utilizatorilor. Dar, dacă omiteți extensia de fișier de pe fișierul ErrorDocument directivă, atunci ar declanșa o rescriere internă suplimentară, după subcererea internă pentru documentul de eroare - care ar trebui evitată.

Deci, ar trebui să includeți extensia fișierului în fișierul ErrorDocument directivă:

ErrorDocument 404 /404.php
Whip avatar
drapel cn
Eu folosesc Apache. Ar trebui și funcționează pe xampp, dar nu și pe serverul meu. Se pare că „ErrorDocument” este ignorat atunci când este prezent codul de eliminare a extensiei. Nu sunt aceste două directive complet separate? Ce ar putea interfera aici?

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.