2009-03-26 11 views
14

Sto usando lo strumento URL Rewriting.NET con IIS 6. Ho il mio contenuto di pagina predefinito impostato per default.aspx in IIS. Quello che sto cercando di fare è avere /default.aspx fornire un reindirizzamento 301 alla directory root (www.example.com/default.aspx -> www.example.com). Ho provato a disattivare i documenti predefiniti, senza alcun risultato.Riscritto URL da /default.aspx a/

Quello che spero di fare è utilizzare un paio di regole Rewriting.NET per raggiungere questo obiettivo. qualche idea?

EDIT:

Scusa, ho dimenticato di chiarire. Se reindirizzo da /default.aspx a/con i documenti predefiniti attivati ​​(vorrei lasciarli attivi) ottengo un ciclo infinito di default ->/-> default

+1

Ti suggerisco di pubblicare informazioni sulla tua configurazione – eglasius

risposta

15

Alla fine ho finito per utilizzare IIS 7 con il modulo URL Rewrite, che consente di eseguire correttamente questo reindirizzamento.

Edit:

La regola è

<rule name="Default Redirect" stopProcessing="true"> 
    <match url="^default\.aspx$" /> 
    <action type="Redirect" url="/" redirectType="Permanent" /> 
</rule> 

si può fare con una regola separata per ogni cartella, oppure è possibile utilizzare

<rule name="All Redirect"> 
    <match url="^(.*\/)*default\.aspx$" /> 
    <action type="Rewrite" url="{R:1}" /> 
</rule> 
+0

Ho aggiornato la risposta con qualche codice – CodeMonkey1313

+1

Non so se 'l'aggiornamento a IIS7' sia davvero una risposta a questo problema. – ChadT

+0

Grazie per aver condiviso – citronas

0

Non sono sicuro di aver capito qual è il problema

Anche se si disattivano i documenti predefiniti,/si limiterà semplicemente alla directory piuttosto che alla pagina default.aspx.

Lasciare i documenti predefiniti e fare semplicemente un reindirizzamento in base al fatto che default.aspx si trovi o meno nell'URL richiesto.

+0

che creerebbe un ciclo infinito – CodeMonkey1313

+0

"esegui un reindirizzamento basato sul fatto che default.aspx sia nell'URL richiesto": if (Request.Url.ToString(). ToLower(). IndexOf ("default.aspx")! = -1) response.redirect ("/"); –

+0

Ciò comporta ancora un ciclo infinito, poiché i documenti predefiniti sono attivati, una richiesta per/diventa una richiesta per /default.aspx – CodeMonkey1313

1

Se ho capito bene, non si desidera visualizzare 'default.aspx' ogni volta che qualcuno entra in una cartella con quel documento disponibile.

Quindi, se lo colpiscono, si desidera reindirizzare automaticamente a "/" e caricare comunque il documento predefinito?

Se questo è il caso, come sopra indicato, si corre il rischio di un ciclo infinito. Il secondo commento si dà una risposta, ma immagino che in espansione al motore ri-scrittura quello che ci vuole è quello di:

Spegnere documenti predefiniti Registrare ogni cartella con il motore di ri-scrittura Quando viene richiesta quella cartella carica il file default.aspx secondo la tua regola di destinazione

Suona bene?

Devo chiedere, perché vuoi farlo?

+0

So che è piuttosto strano, ma è un requisito del sito, per Valore SEO, in modo che solo un collegamento ti porterà a default.aspx, anziché a due. – CodeMonkey1313

+0

Ho fatto un bel po 'di allenamento SEO e sentire questo sembra strano. Sarei sorpreso che un motore di ricerca come Google o MSN ti penalizzasse. Quindi posso solo indovinare il suo modo di ottenere tutti i tuoi punti di classifica per un solo URL. Ancora - non ho fatto roba SEO tra un po 'quindi è solo una supposizione! – Simon

+1

A quanto ho capito, non è che ci siano due pagine che servono la stessa pagina, è che se le persone si collegano a example.com e example.com/default.aspx mi viene detto che si diffonde il valore del link . – CodeMonkey1313

0

bene è possibile utilizzare .net regolare per controllare l'url httprequest, se ha "default.aspx" in esso, è possibile reindirizzare a "/", non ci sarà il ciclo infinito e è meglio farlo sul precarico, e fine risposta in seguito, per ridurre al minimo il tempo necessario per elaborare

+0

scusa, non ho visto il commenti nella risposta di cui sopra, hey hanno la risposta bene – Ayyash

2

Ho avuto lo stesso problema. Per quelli che si chiedono perché qualcuno vorrebbe fare questo, è una questione di SEO. Se Google indicizza la tua home page con e senza default.aspx alla fine, il PageRank e la popolarità del link verranno divisi tra i due URL. Ora, se stai riscontrando questo problema e sei in grado di consolidare i due URL, potresti ottenere un aumento delle classifiche di ricerca.Un'altra cosa da tenere a mente è che se si sta attraversando il problema, è necessario utilizzare un reindirizzamento 301 per Google per consolidare il loro indice tra due URL. Altrimenti i tuoi sforzi saranno inutili.

Questo è un po 'troppo tardi poiché l'hai già risolto eseguendo l'aggiornamento a IIS7. Ma aggiungerò che l'unica soluzione a questo problema che ho trovato per IIS6 è l'aggiunta di un filtro ISAPI.

ho documentato la soluzione completa qui ... http://swortham.blogspot.com/2008/12/redirecting-default-page-defaultaspx-to.html

5

mi sono imbattuto in questo problema un po 'indietro durante il tentativo di capire perché alcuni IIS installa avrebbe funzionato reindirizzando l'/default.aspx e qualcuno potrebbe degenerare in un anello terminale.

Ho trovato che la risposta era se o meno asp.net era "jolly" mappato per eseguire tutte le richieste all'interno di IIS.

In parole semplici, se si dispone di un'impostazione IIS pronta per l'uso, verrà sempre aggiunto il documento predefinito a qualsiasi richiesta per la radice del sito. Pertanto example.com diventa example.com/default.aspx quando si ispeziona Request.Url in ASP.NET. Pertanto, se rilevi questa situazione e provi a reindirizzare e tornare a example.com, IIS lo fa, aggiunge /default.aspx e il tuo codice viene catturato in un loop di sua creazione.

L'eccezione è se si imposta la mappatura dei caratteri jolly in modo che tutte le richieste vengano elaborate tramite la pipeline asp.net. In questo caso, IIS non aggiunge più il documento predefinito a ogni richiesta a livello Request.Url. E così puoi eseguire il reindirizzamento.

Ho messo tutto in questo post del blog: 301 Redirecting from /default.aspx to the site root - the final word - ma questo è stato scritto diversi anni fa e le modifiche in IIS7 potrebbero aver risolto il problema, come fornisce la risposta attualmente accettata.

Ma se stai combattendo questo problema, allora lo stato di mappatura dei caratteri jolly è il punto giusto da cui partire.

Problemi correlati