Перевод файла Apache .htaccess в IIS web.config. - PullRequest
7 голосов
/ 31 марта 2009

Я разработал приложение на своем локальном компьютере с использованием PHP, MySQL и Apache, и в нем есть файл .htaccess, содержащий это:

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

Но я сообщил, что веб-сервер моего клиента - IIS, и я должен использовать файл web.config вместо .htaccess. Кто-нибудь может направить меня через это, пожалуйста?

Ответы [ 3 ]

4 голосов
/ 16 апреля 2009

Это можно рассматривать как мошенничество, но мы используем ISAPI_Rewrite , что позволяет просто использовать файл .htaccess для IIS. Если вы можете заставить их поместить его на сервер, вам не нужно ничего переводить.

3 голосов
/ 14 апреля 2009

Обратите внимание, что это будет работать только на IIS7 и , а не на IIS6. Также для этого требуется установить FastCGI и модуль перезаписи URL для установки и включения. Это вещи, которые ваш хостер сможет проверить для вас. Если все вышеперечисленное верно, то следующий файл должен помочь (возможно, вам придется настроить пути, но я думаю, ваш хостер сможет сделать это за вас, если вы предоставите им этот файл примера.

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

2 голосов
/ 28 сентября 2012

IIS7 и выше могут импортировать правила Apache .htaccess с помощью модуля URL Rewrite .

  1. Установите модуль перезаписи URL через Microsoft Web Platform Installer
  2. Запустите диспетчер IIS и слева на панели «Подключения» выберите нужный сайт (например, веб-сайт по умолчанию)
  3. В центре (Просмотр функций) дважды щелкните Перезапись URL .
  4. На правой панели нажмите Импортировать правила ... , затем вставьте свои правила из файла .htaccess в Переписать правила Поле
  5. Нажмите «Применить» в правом столбце.
...