Avatar billede Monkeybrain Juniormester
17. april 2014 - 10:27 Der er 7 kommentarer

Web.config SEO

Hej

Jeg har lige nu den mulighed at jeg selv kan angive via mit kontrolpanel hvilken URL, (i dette tilfælde default.asp) der skal vises når der er en fil der ikke eksistere på serveren. Det bruger jeg blandt andet til at lave Url's som domæne.dk/test. Hvor default filen splitter URL'en og viser indholdet derefter.

Men jeg er blevet frataget den mulighed i mit kontrolpanel og får afvide at jeg skal lave det i en web.config fil. Er der nogle der kan hjælpe mig :-) - jeg har en ide om at det muligvis er en rule jeg skal lave.
Avatar billede kalp Novice
17. april 2014 - 15:42 #1
Jeg tror ikke det er helt tydeligt hvad du ønsker, så måske misforstår jeg.

Hvis du vil kunne angive et hvilket som helst "mappe" navn og så få ASP.NET til at redirecte til en side hvis den ikke findes har du et problem.
Som udgangspunkt forwarder IIS'en ikke disse kald til ASP.NET

Hvis du koder MVC så kan du lege lidt med routing og måske komme frem til en fornuftig løsning.

Hvis du arbejder med webforms, så tror jeg slet ikke det kan gøres. Hvis det skal så skal det være fordi en http-handler/modul kan klare det - tvivler dog:
http://msdn.microsoft.com/en-us/library/bb398986%28v=vs.100%29.aspx

Du kan selvfølgelig placere en default.aspx fil i alle dine mapper og dermed vil den blive vidst.

Routing kan vidst også anvendes i webforms, så det kan jeg heller ikke helt udelukke.
Avatar billede kalp Novice
17. april 2014 - 15:46 #2
i øvrigt er min kommentar baseret på at du ikke har adgang til IIS'en som du siger:)
Avatar billede Monkeybrain Juniormester
17. april 2014 - 16:04 #3
Det jeg mener var dette

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.web>
        <customErrors mode="RemoteOnly" defaultRedirect="/fail"/>
    </system.web>
    <system.webServer>
    <rewrite>
      <rules>
        <rule name="backstage">
        <match url="/backstage" />
          <action type="Rewrite" url="/backstage/default.asp" />
        </rule>
        <rule name="Rewrite 1">
        <match url="^((?!css|js|images)[^/]+)/?$" />
          <action type="Rewrite" url="default.asp?p1={R:1}" />
        </rule>
        <rule name="Rewrite 2">
        <match url="^((?!css|js|images)[^/]+)/([^/]+)/?$" />
          <action type="Rewrite" url="default.asp?p1={R:1}&amp;p2={R:2}" />
        </rule>
        <rule name="Rewrite 3">
        <match url="^((?!css|js|images)[^/]+)/([^/]+)/([^/]+)/?$" />
          <action type="Rewrite" url="default.asp?p1={R:1}&amp;p2={R:2}&amp;p3={R:3}" />
        </rule>
        <rule name="Rewrite 4">
        <match url="^((?!css|js|images)[^/]+)/([^/]+)/([^/]+)/([^/]+)/?$" />
          <action type="Rewrite" url="default.asp?p1={R:1}&amp;p2={R:2}&amp;p3={R:3}&amp;p3={R:4}" />
        </rule>
        <rule name="Rewrite 5">
        <match url="^((?!css|js|images)[^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$" />
          <action type="Rewrite" url="default.asp?p1={R:1}&amp;p2={R:2}&amp;p3={R:3}&amp;p3={R:4}&amp;p3={R:5}" />
        </rule>
        <rule name="Rewrite 6">
        <match url="^((?!css|js|images)[^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$" />
          <action type="Rewrite" url="default.asp?p1={R:1}&amp;p2={R:2}&amp;p3={R:3}&amp;p3={R:4}&amp;p3={R:5}&amp;p3={R:6}" />
        </rule>
      </rules>
    </rewrite>
</system.webServer>
</configuration>

men mit problem er at jeg kan ikke få adressen domæne.dk/backstage til at hoppe til mappen "backstage" hvor de rent faktisk ligger en default fil.
Avatar billede Monkeybrain Juniormester
17. april 2014 - 16:05 #4
Altså web.config skal virke på domæne.dk, men skal udelukkes fra mappen domæne.dk/backstage
Avatar billede kalp Novice
17. april 2014 - 18:06 #5
Men hvis du har en default.asp side i din backstage mappe burde den egentlig også finde den.
Men din host har måske fjernet default.asp fra at være en side der kan lave redirect.

Du kan enten prøve at lave en web.config fil som du ligger i den backstage mappe (det må man gerne) og med dette indhold:

<?xml version="1.0"?>
<configuration>
  <system.webServer>
    <defaultDocument enabled="true">
      <files>
        <add value="default.asp"/>
      </files>
    </defaultDocument>
  </system.webServer>
  <system.web>
    <compilation debug="true"/>
  </system.web>
</configuration>
Avatar billede kalp Novice
17. april 2014 - 18:09 #6
ovenstående SKAL virke og det ville være nemmest for dig at løse på den måde.

en desperat løsning ville være at lave en default.aspx side hvis eneste kode i page_load er:

Response.Redirect("default.asp");

så har man selvfølgelig også nået bunden:)
Avatar billede Monkeybrain Juniormester
17. april 2014 - 20:37 #7
Det er som om den prioritere URLRewrite højere end selve stien. Den omskriver jo default.asp?p1=et&p2=to til domæne.dk/et/to men filen ligger fysisk på Root. Det betyder feks. også hvis jeg skal se root/backstage mappen, så omskriver den feks. også alle css stier osv.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester