App.yaml di Google App Engine corrisponde a tutti i file PHP e corrisponde a tutti i file HTML e serve rispettivamente

Sto utilizzando Google App Engine con PHP. Voglio che tutti HTML file HTML nella cartella Client_Pages siano riconosciuti e serviti come file statici e che tutti i file PHP nella stessa cartella vengano riconosciuti e serviti come file di script. Ecco come appare il file app.yaml :

 application: myappname version: 1 runtime: php api_version: 1 threadsafe: true handlers: - url: / script: index.php - url: /Client_Pages/*.php script: /Client_Pages/*.php - url: /Client_Pages/*.html static_dir: Client_Pages/*.html 

Immagino che l’ asterisk non funzioni come un jolly in app.yaml ? Ho provato a usare:

 - url: /(.+\.php) script: Client_Pages/\1 

Ma questo non funziona. Non so nemmeno cosa significano tutti i simboli, quindi mi sto solo distruggendo, sperando che qualcosa funzioni. Non voglio farlo, ma non riesco a trovare la documentazione per ciò che fanno tutti quei simboli.

Questo funzionerà per una pagina specifica:

 - url: /Client_Pages/InputForm.php script: /Client_Pages/InputForm.php 

Potrei mettere una riga nel mio file app.yaml per ogni singola pagina del mio sito web, ma preferirei trovare un modo diverso.

Oh aspetta! Resisti! Questo funziona per caricare i miei file PHP:

 - url: /(.+\.php) script: \1 

Quindi cosa significa \1 ? O dov’è un buon riferimento?

Ok, quindi quanto sopra funziona per le pagine php , ma questo NON funzionerà per le pagine HTML, perché?

 - url: /(.+\.html) static_dir: \1 

Ho qualcosa da lavorare Questo caricherà sia le mie pagine PHP che HTML :

 - url: /(.+\.php) script: \1 - url: /Client_Pages static_dir: Client_Pages 

Così ho trovato una soluzione, ma non ho ancora assolutamente idea del perché funzioni o di cosa significano i simboli.

Mi scuso per aver trovato una risposta parziale alla mia domanda nel processo di pubblicazione, ma se qualcuno potrebbe spiegare perché funziona, ti darò i punti che meriti.

Il riferimento all’espressione regolare python è probabilmente il più facile da seguire e più vicino a ciò che sta accadendo qui, insieme al riferimento app.yaml .

In sostanza, il () nell’espressione regolare specifica un raggruppamento (noto anche come riferimento posteriore) e la tua espressione regolare può avere molti gruppi. Il \ 1 è un riferimento al primo gruppo, \ 2 sarebbe il secondo gruppo ecc. Ciò consente di estrarre il valore che corrisponde all’espressione regolare e utilizzare tale valore per selezionare lo script o la risorsa statica.

Quindi fondamentalmente per l’espressione regolare

 /(.+\.php) 

sta dicendo ‘fai al primo gruppo qualsiasi valore che corrisponda all’espressione regolare. + \. php’. Il valore che corrisponde all’espressione regolare può essere recuperato utilizzando il \ 1 che ha specificato il primo gruppo.

Quindi il valore /foobar.php corrisponde all’espressione regolare. +. Php e il valore di \ 1 diventa foobar.php a causa di () attorno all’espressione regolare.

Leggermente più complicato:

 /(.+)/(.+)\.php$ 

Il valore di /foo/bar.php corrisponderebbe a questa espressione regolare, \ 1 equivarrebbe a ‘foo’ [poiché è il primo gruppo nell’espressione regolare] e \ 2 equivarrebbe a ‘bar’ [poiché si tratta del secondo gruppo].

Nota che questa espressione regolare non corrisponderebbe a /foobar.php.

Puoi anche fare qualcosa di simile in modo che l’URL non abbia bisogno di avere il file .php.

 - url: /(.+) script: \1.php 

Usando static_dir rimuovi la necessità di raggruppare, poiché corrisponderà a qualsiasi file presente nella directory.

Se volessi abbinare solo i file * .html che potresti usare

 - url: /Client_Pages/(.*)\.html$ static_files: Client_Pages/\1.html upload: Client_Pages/*\.html$ 

Infine, la cosa da ricordare con app.yaml mentre elabora le regole dall’alto verso il basso e la prima corrispondenza viene eseguita e l’elaborazione si interrompe.

Quindi un app.yaml come

 - url: /.* script: index.php - url: /(.+)\.html static_dir: html_pages 

eseguirebbe sempre index.php in quanto la prima espressione regolare corrisponderebbe a qualsiasi URL incomming.