2009-03-31 10 views
7

tôi đã phát triển một ứng dụng trên địa phương của tôi sử dụng PHP, MySQL và Apache và nó đã một tập tin .htaccess chứa này:dịch tập tin một Apache .htaccess để một 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> 

Nhưng tôi thông báo rằng tôi máy chủ web của khách hàng là IIS và tôi phải sử dụng tệp web.config thay vì .htaccess. Bất cứ ai có thể hướng dẫn tôi qua điều này, xin vui lòng?

Trả lời

3

Hãy lưu ý rằng điều này sẽ chỉ hoạt động trên IIS7 và không trên IIS6. Ngoài ra, this requires FastCGI to be setupthe URL Rewriting module sẽ được cài đặt và bật. Đây là những thứ mà con hoster của bạn sẽ có thể xác minh cho bạn. Nếu tất cả những điều trên là đúng thì tệp sau sẽ thực hiện thủ thuật (bạn có thể cần phải chỉnh sửa đường dẫn nhưng một lần nữa tôi nghĩ rằng con hoster của bạn sẽ có thể thực hiện việc này cho bạn nếu bạn cung cấp cho chúng tệp ví dụ này.

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

cảm ơn olle và xin lỗi vì trả lời muộn! Tôi đã hoàn tất, mã của bạn đã giúp: D –

+0

Ok tốt, nếu bạn cho tôi biết những gì đã "sai" với nó tôi có thể cập nhật awnser cho khách truy cập trong tương lai. – olle

4

này có thể được coi là gian lận, nhưng chúng tôi sử dụng ISAPI_Rewrite, cho phép bạn chỉ cần sử dụng tập tin .htaccess cho IIS. Nếu bạn có thể nhận được chúng để đặt nó trên máy chủ, bạn sẽ không cần phải dịch

2

IIS7 trở lên có thể nhập các quy tắc Apache .htaccess bằng cách sử dụng mô-đun URL Viết lại URL.

  1. Cài đặt các URL Rewrite module qua Microsoft Web Platform Installer
  2. Bắt đầu IIS Manager và bên trái, trong bảng Connections, chọn trang web yêu cầu của bạn (ví dụ Default Web Site)
  3. Trong trung tâm (Tính năng xem) nhấp đúp chuột URL Rewrite.
  4. Trong bảng điều khiển bấm Rules nhập đúng ... sau đó dán quy tắc của bạn từ các tập tin .htaccess vào các quy tắc Rewrite hộp
  5. Bấm áp dụng trong cột bên phải.