Direktoriju saraksts un FFuF - Be The H.A.C.R. - Ep - 09

Man ir āķis .htaccess šāda direktīva:

RewriteCond %{SCRIPT_FILENAME} !-d RewriteCond %{SCRIPT_FILENAME} !-f RewriteRule ^(.*)$ index.php [L] 

Viss, kas nepastāv, un URL tiek pārrakstīts atpakaļ uz rādītāja lapu. Tas ir lieliski, tomēr es vēlos, lai galvenei tiktu nosūtīts 404, nevis 200. Kā es to darītu?

Es domāju, ka vienīgais veids, kā to izdarīt, ir izmantot ErrorDocument direktīva:

ErrorDocument 404 index.php 

jo ar RewriteRule jūs "maskējat" kļūdu, pieprasījumam apkalpojot citu lapu.

Tomēr jums tas ir jāzina ErrorDocument 404 nemainīs lapas URL, tādējādi jūsu mājas lapa būs nepareizā URL.

  • 1 man bija jāizmanto /index.php tā vietā index.php bet tas nostrādāja. Tagad tam ir lielāka jēga. Paldies
  • @Jakobud Ja tas izdosies, atzīmējiet jautājumu kā atbildētu ...
  • "jums būs jūsu sākumlapa ar nepareizu vietrādi URL" - tas, starp citu, būtu arī tas, ko darītu jautājuma kods (iekšēja pārrakstīšana).

Sākotnējais pārrakstīšanas noteikums darbosies. Jums vienkārši jāmaina index.php lai atgrieztu 404. Jums vienkārši jāiekļauj šī rinda augšpusē

 header('Status: 404 Not Found'); 

Tajā brīdī PHP skripts būs atbildīgs par kļūdas lapas satura rakstīšanu. Jūs būsiet ieviesis pielāgotu 404.

  • Lai gan jūs, iespējams, vēlaties to darīt nosacīti index.php. (Ko jūs viegli varētu izdarīt, pamatojoties uz URL.)

404 ir strupceļš, tāpēc jūs nevarat nosūtīt 404 un novirzīt, ja vien jūs neizmantojat JS gabalu 404 lappusē, bet es ienīstu tās lapas, kuras "jūs tiksiet ātri novirzītas ...".

Mans risinājums nedara precīzi ko jūs jautājat, bet jūs varētu darīt daudz vairāk 404.php failu.

Risinājums:

iekšā .htaccess:

ErrorDocument 404 /404.php 

iekšā 404.php:

<?php // Redirect and send 301 header (a redirect defaults to a 302) header('Location: http://www.example.com/', TRUE, 301); 
  • Vai neesat pārliecināts par jūsu "risinājuma" pamatojumu? Šķiet, ka 404 jūsu piemērā ir pilnīgi lieks. Kā jūs norādāt savā pirmajā rindiņā "jūs nevarat nosūtīt 404 un novirzīšana "- jūs, šķiet, esat to parādījis savā piemērā?
  • Lai gan serveris 404 manā risinājumā apstrādā 404, pārlūkprogrammai PHP rezultātā tiek nosūtīta 301 galvene header() funkciju. Iemesls izmantošanai ErrorDocument 404 tā vietā, lai pārrakstītu, manā gadījumā bija darīt lietas 404.php failā, pamatojoties uz pieprasījumu, dažos gadījumos es varētu vēlēties novirzīt, bet citos gadījumos es vēlos parādīt 404 lapu (kurai būtu 404 galvene ).

strādāja par jums: Charles Robertson | Vēlies ar mums sazināties?