URL semantici con punti in .net

Sto cercando di creare URL semantici per le pagine di ricerca, ma se qualcuno usa una ricerca finita in punto, il motore .net restituisce un 404.

La richiesta non arriva nemmeno al motore di routing, quindi penso che sia qualcosa legato alla sicurezza o qualcosa del genere.

Ad esempio, anche i percorsi StackOverflow non funzionano in questi casi: https://stackoverflow.com/questions/tagged/etc .

Se si utilizza .NET 4.0 e IIS 7+, è ansible impostare questo flag nella sezione system.web del proprio web.config e sarà consentito:

 

L’ho provato e funziona. Haack ne ha una spiegazione.

Tutto dopo il ‘.’ è l’estensione del file. Se quell’estensione non è mappata su ASP.NET, non verrà passata al gestore ASP.NET. IIS cerca invece un file statico. Quindi il 404. Se non aggiunge nulla (e difficile vedere come sarebbe), suggerisco di spogliarlo.

Quando il periodo finale non è significativo (come nel caso di https://stackoverflow.com/questions/tagged/etc. ) È ansible utilizzare il modulo URL Rewrite di IIS per eliminare i periodi finali.

Modello : ^(.*[^.])(\.+)$
Riscrivi l’URL: {R:1}

Questo non aiuterà quando si getta via il periodo non è un’opzione, o ci sono periodi alla fine dei segmenti di percorso intermedi, ma per il caso di uso molto reale di affrontare i periodi che vengono attaccati agli URL tramite algoritmi di auto-collegamento può aiutare.

Sembra che IIS potrebbe non sapere come gestire una richiesta con un’estensione vuota.

Fare clic destro sul sito Web e selezionare “Proprietà”. Fai clic su “Configurazione …” nella scheda “Home directory”. Guarda le “Estensioni dell’applicazione” e prova ad aggiungere un’estensione vuota o con caratteri jolly.

In Windows, i nomi dei file non possono terminare con un ‘.’ Penso che tutti i problemi derivino da lì, cioè IIS non sa cosa fare con esso, quindi non arriva mai fino al gestore degli errori ASP.NET e ottiene maniglie dalla pagina IIS 404 predefinita.

La maggior parte dei motori di ricerca ( anche Google in ogni caso ) esclude la punteggiatura dalle query, e penso che anche la tua dovrebbe esserlo.

EDIT: cade sopra perché non ha alcun tipo di file, anche il sito di Microsoft cade sopra http://www.microsoft.com/en/us/fallover . ma puoi modificare i file di errore predefiniti (vivi da qualche parte come C: \ WINDOWS \ help \ iisHelp \ common) o cambiarlo completamente.

Controlla questo fuori: Configurazione dei messaggi di errore personalizzati (IIS 6.0)

Non dovresti mettere le ricerche esatte degli utenti nella stringa di query in quel modo … dovresti UrlEncode. Questo risolverà il problema.