2009-03-31 18 views
7

I stworzył aplikację na moim komputerze lokalnym z wykorzystaniem PHP, MySQL i Apache i ma plik .htaccess zawierający to:Przełożenie plik .htaccess Apache do 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> 

Ale poinformowany, że mój serwer WWW klienta to IIS i muszę użyć pliku web.config zamiast .htaccess. Czy ktoś może mnie przez to przejść?

Odpowiedz

3

Należy pamiętać, że działa to tylko na IIS7 i , a nie na na IIS6. Również this requires FastCGI to be setup i the URL Rewriting module do zainstalowania i włączenia. Oto rzeczy, które Twój gospodarz będzie w stanie zweryfikować. Jeśli wszystkie powyższe warunki są prawdziwe, to poniższy plik powinien załatwić sprawę (może być konieczne zmodyfikowanie ścieżek, ale znowu myślę, że Twój gospodarz będzie w stanie zrobić to za Ciebie, jeśli podasz im ten przykładowy plik:

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

dzięki olle i im przepraszam za spóźnioną odpowiedź! Skończyłem, twój kod pomógł: D –

+0

Dobrze, jeśli dasz mi znać, co było "nie tak", mogę zaktualizować awnser dla przyszłych użytkowników. – olle

4

może to być postrzegane jako oszustwo, ale używamy ISAPI_Rewrite, który pozwala po prostu użyć pliku .htaccess na IIS. Jeśli można je umieścić go na serwerze, nie trzeba tłumaczyć cokolwiek:

2

Usługi IIS7 i nowsze mogą importować reguły Apache .htaccess przy użyciu modułu przeprojektowania adresu URL .

  1. zainstalować URL Rewrite module poprzez instalatora Microsoft Web Platform
  2. start IIS Manager i na lewo, w okienku Połączenia wybierz żądaną stronę (np Default Web Site)
  3. w centrum (Widok funkcji) kliknij dwukrotnie URL Rewrite.
  4. w prawym panelu kliknij reguły przywozu ... następnie wkleić reguły z pliku .htaccess do zasad przepisać box
  5. kliknij przycisk Zastosuj w prawej kolumnie.
Powiązane problemy