Puncte:0

Apache VirtualDocumentRoot mai multe subdirectoare posibile

drapel za

Am un server local Apache pentru dezvoltarea paginilor. Prin urmare, am un folder rădăcină în care toate paginile diferite sunt în subdosare. Aceste foldere au apoi alte subdosare pentru conținutul public. Acesta poate fi - în funcție de cadru - un folder diferit (de exemplu, public, wwwroot, webroot, httpdocs).

Structura folderului:
/
|-- srv
    |-- http
        |-- pagina
        | |-- webroot
        | |-- .htaccess
        | |-- index.php
        |-- pagina 2
            |-- public
                |-- index.php

Acum, în loc să folosesc http://localhost/page/webroot, vreau să folosesc http://page.localhost/ Schema URL, deoarece ar trebui să fie ca în lumea reală (de exemplu, link-urile care indică rădăcină ar trebui să funcționeze și așa mai departe).

Mai întâi am încercat cu VirtualDocumentRoot /srv/http/%-2/webroot/ care pare să funcționeze destul de bine dacă toate paginile au folderul webroot ca dosar public. Cu toate acestea, nu funcționează dacă folderul public are un alt nume.

Deci, a doua mea abordare a fost să folosesc mod_rewrite. cu ceva de genul:

DocumentRoot /srv/http
RewriteEngine Pornit

RewriteCond %{HTTP_HOST} (.+)\.[^\.]+$
RewriteCond %{DOCUMENT_ROOT}/%1/webroot -d
RewriteRule ^(.+) %{DOCUMENT_ROOT}/%1/webroot/$1 [L]

(Ultimele 3 rânduri pot fi repetate pentru celelalte foldere - omis aici pentru lizibilitate)

A părut destul de promițător la început, dar apoi am aflat că nu funcționează dacă pagina are un fișier .htaccess cu mod_rewrite local care mapează toate cererile la index.php (cum fac unele cadre). În acest caz, mod_rewrite va rula într-o buclă nesfârșită, deoarece partea dinamică a căii este tratată ca un subfolder și nu ca DocumentRoot. Iată rezultatul din jurnal: https://pastebin.com/4aNgRahx

Acest lucru se repetă până când se atinge limita recursiunii.

Fișierul .htaccess arată astfel:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^ index.php [L]
</IfModule>

Dacă îl opresc, va funcționa.

Deci ce ar trebui să fac acum?

Schimbarea fișierului .htaccess sau a oricăror fișiere din folderul proiectului nu este o opțiune, deoarece atunci nu va mai funcționa pe serverul real.

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.