PHP, переписывание URL-адресов с помощью htaccess и перезапись URL-адреса Microsoft IIS

Я привык работать с серверами Apache, поэтому, когда mod_rewrite включен, я могу создать файл htaccess и использовать переписывание URL.

Вот мой файл htaccess:

RewriteEngine On RewriteCond %{REQUEST_FILENAME} -s [OR] RewriteCond %{REQUEST_FILENAME} -l [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^.*$ - [NC,L] RewriteRule ^.*$ index.php [NC,L] 

Теперь я создал этот сайт, который использует этот модуль перезаписи URL-адресов, но я узнал, что это сервер Microsoft. Могу ли я использовать файл htaccess? Есть ли что-то, что мне нужно изменить, чтобы заставить его работать? Как узнать, настроена ли переписывание URL-адресов на сервере Microsoft?

Solutions Collecting From Web of "PHP, переписывание URL-адресов с помощью htaccess и перезапись URL-адреса Microsoft IIS"

Вы можете использовать свою конфигурацию как есть, в Ionic Isapi Rewrite Filter (IIRF) .

IIRF является бесплатным, открытым исходным кодом.

Если вы используете IIS 7, вы можете использовать модуль повторного URL-адреса IIS, который имеет функцию «Правила импорта», которая может использоваться для перевода правил mod_rewrite в формат перезаписи URL-адреса IIS. Эти конкретные правила перезаписи не будут транслироваться, потому что RewriteCond использует флаги «-s» и «-l», которые проверяют, соответствует ли запрошенный URL ненулевому размеру файла или символической ссылке в файловой системе. Если ваше приложение не использует никаких символических ссылок, вы можете спокойно заменить эти условия:

 RewriteCond %{REQUEST_FILENAME} -f [OR] 

а затем преобразовать правила, используя интерфейс перезаписи URL-адреса IIS. Это приведет к следующим правилам:

 <rewrite> <rules> <rule name="Imported Rule 1" stopProcessing="true"> <match url="^.*$" /> <conditions logicalGrouping="MatchAny"> <add input="{REQUEST_FILENAME}" matchType="IsFile" /> <add input="{REQUEST_FILENAME}" matchType="IsDirectory" /> </conditions> <action type="None" /> </rule> <rule name="Imported Rule 2" stopProcessing="true"> <match url="^.*$" /> <action type="Rewrite" url="index.php" /> </rule> </rules> </rewrite> 

Файл .htaccess – это соглашение Apache для обеспечения доступа конечного пользователя к конфигурации Apache, поэтому вы не сможете использовать его в качестве замены на сервере IIS (Microsoft). Вы могли бы использовать его, если бы вы запускали Apache в Windows.

IIS7 имеет модуль перезаписи URL-адресов, который предлагает поддержку перезаписи URL-адресов. Также есть продукт ISAPI_Rewrite, который делает то же самое для предыдущих версий IIS. Вероятно, вам понадобится некоторый уровень административных разрешений на сервере для использования любого из этих модулей (т. Е. Никакого механизма, подобного htaccess)

Вы можете использовать свою конфигурацию выше, как в ISAPI_Rewrite 3 или Helicon Ape .