Pašlaik mainu tīmekļa mitinātājus. Mans vecais saimnieks bija iesācējiem draudzīgu “kazlēnu cimdu” šķirne. Man bija mazāka kontrole, taču tas aizkadrā rūpējās par daudzām lietām.

Mans jaunais tīmekļa resursdators ļaus man darīt vairāk ar manu vietni, taču ārpus vārtiem ir iestatīts tikai minimālais minimums. Tīmekļa serveris nedarīs neko papildus, ja vien es to īpaši neliecinu. Tagad man jāapgūst kaudze jaunu "acīmredzamu" zināšanu par servera pārvaldību.

Pārbaudot savu vietni jaunajā resursdatorā, es ātri sapratu, ka serveris pat neatver saites uz vietni, kurā trūkst faila paplašinājuma (piem., www.example.com/article99)

Iesācējs man mēģina izdomāt, kā iestatīt serveri, lai varētu pāriet uz "Labi, šī saite uz /photo37 nav paplašinājuma, bet es redzu, ka ir /photo37.png šeit direktorijā. Tam ir jābūt atsaucei uz saiti, tāpēc es to atvēršu ".

No tā, ko līdz šim esmu varējis izpētīt, veids, kā to izdarīt, ir iespējot MultiViews. Kad pievienoju Options +multiviews man .htaccess failu, šķiet, ka tas ir triks. Bet es vēlos vēlreiz pārbaudīt, vai tas ir pareizais veids, kā to izdarīt, un vai man netrūkst kaut kā acīmredzama. Jebkura palīdzība vai saites uz resursiem ir ļoti augsti novērtētas.

  • Iespējams, ka daudz vēlamais veids (lai gan tas prasa vairāk darba) ir izmantot mod_rewrite - - stackoverflow.com/q/5534132/3395469
  • Ja es izmantotu mod_rewrite, man būtu jāizveido noteikumi, lai apstrādātu visu veidu failus bez paplašinājumiem, vai ne? T.i., viens .html, viens .jpg, viens .png utt.
  • Jums jāņem vērā paplašinājumi, kurus vēlaties paslēpt, taču bieži vien to darbības joma ir pietiekami ierobežota, lai tiem nebūtu pārāk lielas nozīmes. Šim jautājumam ir pamata izklāsts, kā paslēpt vairākus paplašinājumus ar mod_rewrite un izvairīties no problēmām ar cilpu izveidošanu - - stackoverflow.com/q/9157232/3395469
  • "viens .html, viens .jpg, viens .png" - Parasti galvenā dokumenta vietrādim URL vēlaties izmantot tikai "paplašinājumus bez URL" (uz ko attiecas iepriekš minētā atsauces saite ... .htm, .html, .phputt.). Jūsu statiskajiem resursiem (attēliem, CSS, JS utt.) Visiem jābūt paplašinājumiem. Ja jūs gājāt bez pagarinājuma par visu, tad jūs palielināt savu atkarību no MultiViews, pāreja uz citu metodi / sistēmu būtu sarežģītāka un pakļauta kļūdām.

tl; dr Jā, jūs varat iespējot MultiViews lai rādītu URL bez paplašinājumiem. ti. Ja faila paplašinājums ir izlaists no URL, kas citādi tiktu piesaistīts esošam failam. Tomēr ņemiet vērā iespējamos konfliktus ar mod_rewrite.

serveris pat neatver saites uz vietni, kurā trūkst faila paplašinājuma

Jums liekas, ka tam vajadzētu būt normālai (vai paredzamai) uzvedībai? Tas nav. Mūsdienās šāda rīcība būtu nevēlama lielākajā daļā (ar datu bāzēm balstītu / CMS) vietņu. MultiViews Apache pēc noklusējuma nav iespējots. Tam jābūt skaidri iespējotam.

Kā jūs atradāt, šķiet, ka daži koplietotie resursdatori to iespējo MultiViews automātiski saviem klientiem. Tātad bez paplašinājuma vietrāži URL "maģiski" darbojas no kastes. Tomēr, ja pēc tam vēlaties darīt kaut ko sarežģītāku un pārrakstīt / novirzīt URL, izmantojot mod_rewrite, varat nonākt pie negaidītiem konfliktiem, kas var būt mulsinoši, lai atkļūdotu. Šķiet, ka tā ir diezgan izplatīta problēma - jo īpaši StackOverflow ir pakļauts šāda veida jautājumiem, kur risinājums ir vienkārši atspējot MultiViews (jo resursdators to ir automātiski iespējojis).

Konflikts ar mod_rewrite rodas tāpēc, ka mod_negotitation (kas virza MultiViews) darbojas pirms mod_rewrite. Piemēram, kad jūs pieprasāt /article99 ar MultiViews iespējots, mod_negotiation izsniedz iekšēju apakšpieprasījumu /article99.html (piemēram). Jūs to nevarat pārtvert, izmantojot mod_rewrite, jums būs jāsaskaņo ar iegūto apakšpieprasījumu, ti. /article99.html, nevis /article99 (ko jūs, iespējams, gaidījāt, jo tas ir URL, kuru lietotājs faktiski pieprasīja, un vienīgais vietrādis URL, kuru faktiski redzat)

Es vēlos vēlreiz pārbaudīt, vai tas ir pareizi izdarīts

Nu, tas ir viens "veids, kā to izdarīt". Jā, tas ir "pareizi". Tomēr tas nav vienīgais veids, kā to izdarīt. Un tas ne vienmēr ir pareizais veids, kā to izdarīt. Tas ir atkarīgs tieši no tā, ko jūs mēģināt darīt un ko vēl jūs darāt. Bet, ja tas jums strādā; lieto to.

MultiViews dara vairāk nekā vienkārši pievieno faila paplašinājumu. Atgriežamais resurss ir atkarīgs no pieprasījuma (tā ir mod_negotiation daļa "sarunas"). Un kas tiek atgriezts, kad jums ir article99.php, article99.html un article99.jpg? Un, ja jums ir vienīgais fails article99.abc tad jūs, iespējams, saņemsiet 404 (ja vien jums nav definēts draiveris .abc faili).

Apsveriet arī to, ja vienkārši izmantojat MultiViews, fails article99.html (piemēram) joprojām ir pieejama arī. Tātad, jums ir vietrāži URL /article99 un /article99.html abi atgriež to pašu resursu. Tas ir tehniski satura dublikāts - kaut arī tas ne vienmēr ir problēma, ja jūs nodrošināsiet, ka /article99 URL ir vienīgais URL, uz kuru jebkad ir atsauce. Kā minimums jums jāiestata a <link rel='canonical'/article99.

  • Paldies par detalizētu atbildi. Pēc skaņas tas ir piemērots multiview iespēju iespiešanai manā vietnē, jo a) tā ir ļoti vienkārša statisku .html rakstu kolekcija ar nedaudziem attēlu failiem ... un b) jo 99% ārējo saišu ir izgrieztas

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