2009-03-31 23 views
7

he desarrollado una aplicación en el local usando PHP, MySQL y Apache y que tiene un archivo .htaccess que contenga lo siguiente:archivo .htaccess de Apache 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> 

Pero me informó que mi el servidor web del cliente es IIS y tengo que usar un archivo web.config en lugar de .htaccess. ¿Alguien puede dirigirme a través de esto, por favor?

Respuesta

3

Tenga en cuenta que esto solo funcionará en IIS7 y no en en IIS6. También this requires FastCGI to be setup y the URL Rewriting module para ser instalado y habilitado. Estas son las cosas que su proveedor de servicios de internet podrá verificar por usted. Si todo lo anterior es cierto, el siguiente archivo debería ser el truco (puede que tenga que modificar las rutas, pero creo que su proveedor de servicios de Internet podrá hacer esto por usted si le proporciona este archivo de ejemplo.

<?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

gracias olle y lo siento por la última respuesta! Finalmente he terminado, tu código me ayudó: D –

+0

Bien, si me dices que estaba "mal" con él, puedo actualizar la respuesta para futuros visitantes. – olle

4

Esto podría ser visto como hacer trampa, pero nosotros usamos ISAPI_Rewrite, que le permite sólo tiene que utilizar el archivo .htaccess para IIS. Si se puede conseguir que se solucione en el servidor, no será necesario traducir cualquier cosa.

2

IIS7 y superior pueden importar las reglas de Apache .htaccess usando el módulo de reescritura URL.

  1. instalar el URL Rewrite module a través de la Plataforma Web de Microsoft Installer
  2. Iniciar el Administrador de IIS y de la izquierda, en el panel de conexiones, seleccione el sitio requerido (por ejemplo, Sitio Web predeterminado)
  3. En el centro (Vista de funciones) haga doble clic en URL Reescribir.
  4. En el panel de la derecha haga clic en Importar reglas ... continuación, pegar sus reglas desde el archivo .htaccess en las reglas de reescritura cuadro
  5. clic en Aplicar en la columna de la derecha.
Cuestiones relacionadas