2009-03-31 3 views
7

ho sviluppato un'applicazione sul mio locale utilizzando PHP, MySQL e Apache e ha un file .htaccess che contiene questo:Tradurre file di un Apache .htaccess a un web.config IIS

#Setting the default handler. 
    DirectoryIndex home.do 

<IfModule mod_mime.c> 
    #Supporting .do extensions  
    AddType application/x-httpd-php .do 
</IfModule> 

<IfModule mod_rewrite.c> 
    #Removing .do file extension if necessary 
    RewriteEngine on 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_FILENAME}\.do -f 
    RewriteRule ^(.*)$ $1.do 
</IfModule> 

Ma ho informato che il mio il server web del cliente è IIS e devo usare un file web.config invece di .htaccess. Qualcuno può guidarmi attraverso questo, per favore?

risposta

3

Si prega di notare che questo funzionerà solo su IIS7 e non su IIS6. Anche this requires FastCGI to be setup e the URL Rewriting module da installare e abilitare. Queste sono cose che il tuo hoster sarà in grado di verificare per te. Se tutto quanto sopra è vero, il seguente file dovrebbe fare il trucco (potrebbe essere necessario modificare i percorsi, ma ancora una volta penso che il tuo hoster sarà in grado di farlo per te se li fornisci con questo file di esempio

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <configSections> 
     <sectionGroup name="system.webServer"> 
      <sectionGroup name="rewrite"> 
       <section name="rewriteMaps" overrideModeDefault="Allow" /> 
       <section name="rules" overrideModeDefault="Allow" /> 
     </sectionGroup> 
    </sectionGroup> 
</configSections> 

<system.webServer> 
    <!-- Mapping the .do extension to the PHP ISAPI module --> 
    <handlers> 
     <!-- the following line is very specific to your host 
      please check the module name and the scriptProcessor 
      path with the system administrator! basically this is 
      the same as 
      http://learn.iis.net/page.aspx/246/using-fastcgi-to-host-php-applications-on-iis-70/#EnableFastCGI 
      only in .config format. --> 
     <add name="MaskDoAsPHP" path=".do" verb="GET,HEAD,POST,DEBUG" modules="FastCgiModule" scriptProcessor="C:\PHP\php-cgi.exe" /> 
    </handlers> 

    <!-- Setting the default handler. --> 
    <defaultDocument> 
     <files> 
      <clear /> 
      <add value="home.do" /> 
     </files> 
    </defaultDocument> 

    <rewrite> 
     <rules> 
      <rule name="Removing do extension" stopProcessing="true"> 
       <match url="^(.*)$" ignoreCase="false" /> 
       <conditions> 
        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> 
        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="{R1}.do" appendQueryString="true" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 

+0

grazie olle e mi dispiace per la risposta tardiva! Finalmente ho finito, il tuo codice mi ha aiutato: D –

+0

Ok bene, se mi fai sapere cosa è "sbagliato" con esso posso aggiornare il proprietario per i futuri visitatori. – olle

4

Questo potrebbe essere visto come barare, ma usiamo ISAPI_Rewrite, che consente di utilizzare il proprio file .htaccess per IIS. Se si può ottenere loro di mettere sul server, non sarà necessario a tradurre qualsiasi cosa

2

IIS7 e versioni successive possono importare le regole di .htaccess Apache utilizzando il modulo di riscrittura dell'URL .

  1. installare il URL Rewrite module tramite il Microsoft Web Platform Installer
  2. Avviare IIS Manager e sulla sinistra, nel riquadro Connessioni, selezionare il sito richiesto (ad esempio Sito Web predefinito)
  3. Nel centro (Funzionalità Visualizza) doppio click Riscrivi URL.
  4. in alto a destra del pannello click Importa regole ... quindi incollare le regole dal file .htaccess nelle regole di riscrittura scatola
  5. Fare clic su Applica nella colonna di destra.