Назад | Перейти на главную страницу

Чистый URL-адрес Drupal на IIS

Есть идеи, как включить чистые URL-адреса в drupal, когда сервером является IIS?

Быстрый поиск в Google вернул это руководство, URL-адреса Drupal Clean на IIS. Это полезно?

После небольшой боли, мой великий администратор хостинга и мне удалось получить Ionic ISAPI Rewriting Filter (IIRF) 2.0.1.1013 RELEASE, работающий над IIS v6.0. Я думал, что опубликую, как у нас это работает; и надеюсь, наше решение вам поможет!

До того, как я начал, у меня был сайт, работающий на другом типе сервера, поэтому у меня возникли проблемы с существующей конфигурацией Drupal. Итак, если у вас уже есть сайт, настроенный в другом месте, убедитесь, что вы сделали следующее перед переход на новый сервер:

  1. Отключите чистые URL-адреса в админке Drupal -> Конфигурация сайта -> Чистые URL-адреса
  2. Если у вас есть Global Redirect модуль включен, убедитесь, что вы установили для параметра «Non-clean to Clean» значение «Off» в Admin -> Site Configuration -> Global Redirect

Вот шаги, которые мы предприняли, чтобы заставить его работать:

  1. Скачал Ionic ISAPI Rewriting Filter 2.0.1.1013 RELEASE и распаковал файл
  2. Следуйте инструкциям в руководстве. Руководство включено в ZIP-файл по адресу AdminGuide> Help> IirfGuide.chm. Мы использовали файл IirfGlobal.ini, цитируемый в конце этого поста.
  3. Перезапустил IIS
  4. Создал файл Iirf.ini в корневой папке сайта, введя только StatusUrl /iirsStatus RemoteOk. Затем мы проверили, работает ли IIRS, перейдя в http://mysite.example.com/iirsStatus. Он должен распечатать для вас некоторые строки состояния.
  5. Изменен файл Iirf.ini в его окончательном виде, как указано в конце этого сообщения.
  6. Снова включил чистые URL-адреса. Не включай Global Redirectесть вариант «От чистых до чистых»! Он будет перенаправлять страницу бесконечно.

IirfGlobal.ini:

RewriteEngine ON
RewriteFilterPriority DEFAULT
NotifyLog OFF

Iirf.ini:

# Do not pass to drupal if the file or directory exists
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]

# Handle query strings on the end
RewriteRule /(.*)\?(.*)$ /index.php\?q=$1&$2 [I,L]

# now pass through to the generic handler
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/(.*)$ /index.php?q=$1 [I,L]

На сайте Drupal есть документация об использовании чистых URL-адресов в II6, которые я сейчас использую. Проверять, выписываться http://drupal.org/node/3854.

Короткий ответ: загрузите ISAPI Rewrite 2 lite из http://www.isapirewrite.com/. Облегченная версия позволяет настроить только один набор правил перезаписи для всей конфигурации IIS, но работает хорошо и бесплатна.

Платная версия позволяет вам указывать правила перезаписи для каждого сайта, который вы настроили в IIS, но для этого требуется дополнительная настройка IIS.

Я использую следующие правила ISAPI:

# Helicon ISAPI_Rewrite configuration file
# Version 3.1.0.62

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !=/favicon.ico
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA]

Если ваша установка Drupal была установлена ​​в подкаталоге, вам нужно немного изменить эти правила.

Я уже некоторое время использую Ionic Rewrite ... это бесплатно и отлично работает

http://www.codeplex.com/IIRF

Мне удалось реализовать это, установив модуль перезаписи URL и создав файл web.config в базовом каталоге с таким кодом:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <rewrite>
    <rules>
      <rule name="Drupal clean URLs" enabled="true">
        <match url="^(.*)$" ignoreCase="false" />
        <conditions logicalGrouping="MatchAll">
          <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
          <add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />    
          <add input="{REQUEST_URI}" negate="true" pattern="/favicon.ico$" />
        </conditions>
        <action type="Rewrite" url="index.php?q={R:1}" appendQueryString="true" />
      </rule>
    </rules>
  </rewrite>
</configuration>

Больше информации в этом посте, который продолжается: «Вам также необходимо установить исправление для исправления поведения REQUEST_URI при использовании PHP через модуль FastCGI. См. KB954946 Чтобы получить больше информации. Симптомом этой проблемы является то, что все отправленные формы перенаправляются на главную страницу сайта ".

IIRF это бесплатный редактор URL-адресов, работает на IIS и работает с drupal.