Utilizzando IIS6, come posso inserire i file in una sottocartella ma farli funzionare come se fossero nella radice?
-
09-06-2019 - |
Domanda
Il nostro sito Web ASP.NET 3.5 in esecuzione su IIS 6 ha due team che stanno aggiungendo contenuto:
- Il team di sviluppo aggiunge codice.
- Team aziendale che aggiunge semplici pagine web.
Per ragioni di integrità e organizzazione, vorremmo che il team aziendale aggiungesse le proprie pagine web a una sottocartella nel progetto:
Radice:per le pagine del team di sviluppo
Contenuto:per le pagine del team aziendale
Ma
Vorremmo che gli utenti fossero in grado di accedere ai contenuti del team aziendale senza dover aggiungere "Contenuto" nei loro URL, come descritto di seguito:
Radice:Predefinito.aspx (Disponibile a:www.nostrosito.com/default.aspx)
Contenuto:Popcorn.aspx (Disponibile a:www.nostrosito.com/popcorn.aspx)
Esiste un modo che possiamo realizzare per creare una voce di configurazione in uno strumento di riscrittura ISAPI per ognuna di queste pagine?
Soluzione
Non ho modo di testarlo in questo momento, ma penso che tu possa usare il flag -f su RewriteCond per verificare se esiste un file, in entrambe le directory.
RewriteCond %{REQUEST_FILENAME} -!f
RewriteCond Content/%{REQUEST_FILENAME} -f
RewriteRule (.*) Content/(.*)
Qualcosa del genere potrebbe fare anche quello che cerchi.
Altri suggerimenti
Poiché le estensioni saranno ASPX, ASP.NET raccoglierà la richiesta...puoi scrivere un HttpModule che controlla le pagine che producono un 404 e quindi controlla anche la sottocartella.
Se sai che tutte le pagine con un determinato formato proverranno da quella cartella, puoi semplicemente riscrivere l'URL in ASP.NET (in Global.asax o in HttpModule).