.htaccess to web.config для перезаписи и перенаправления URL

У меня есть домен xyz.com, который размещен на сервере Windows.

Код для xyz.com написан на PHP (ранее это было в ASP.NET). База данных — MySQL (ранее это было на сервере SQL).

Теперь, после перестройки всего сайта на PHP, я узнал, что .htaccess не будет работать на сервере Windows. Я должен играть с web.config,

Вот .htaccess код, который я использовал, когда я перерабатывал сайт на PHP локально:

RewriteRule index.html index.php

RewriteRule news.html news.php
RewriteRule search-results.html search-results.php

RewriteRule ^([A-Za-z0-9_\-]+).html$ pages.php?pageid=$1&%{QUERY_STRING} [ne]

Одна странная вещь происходит

Когда я добавляю строку кода ниже в web.config, он работает отлично

    <rules>
<clear />
<rule name="Redirect to google.com" stopProcessing="true">
<match url="^google$" />
<action type="Redirect" url="http://www.google.com/" appendQueryString="false" />
</rule>
</rules>

приведенный выше код перенаправляет меня на google.com, это означает, что модуль перезаписи уже включен

но когда я добавляю код, указанный ниже, в web.config

 <rules>
<rule name="REWRITE_TO_PHP">
<match url="^(.+).html$" />
<conditions logicalGrouping="MatchAll" />
<action type="Rewrite" url="pages.php?pageid={R:1}" />
</rule>

это дает мне ошибку:

Ошибка HTTP 500.19 — внутренняя ошибка сервера
Запрашиваемая страница недоступна, потому что связанные данные конфигурации для этой страницы недействительны.

Может ли кто-нибудь помочь мне с созданием эквивалента web.config код?

2

Решение

Предоставлено: http://cbsa.com.br/tools/online-convert-htaccess-to-web-config.aspx

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="rule 1p">
<match url="index.html"  />
<action type="Rewrite" url="/index.php"  />
</rule>
<rule name="rule 2p">
<match url="news.html"  />
<action type="Rewrite" url="/news.php"  />
</rule>
<rule name="rule 3p">
<match url="search-results.html"  />
<action type="Rewrite" url="/search-results.php"  />
</rule>
<rule name="rule 4p">
<match url="^([A-Za-z0-9_\-]+).html$"  />
<action type="Rewrite" url="/pages.php?pageid={R:1}&amp;%{QUERY_STRING}"  />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
0

Другие решения

Попробуй это.

В вашем файле web.config найдите

<rewrite>
<rules>

Это и положить коды внутри этого. <rewrite><rules> .. codes here... </rules></rewrite> тег.

<rule name="rule 1y">
<match url="index.html"  />
<action type="Rewrite" url="index.php"  />
</rule>
<rule name="rule 2y">
<match url="news.html"  />
<action type="Rewrite" url="news.php"  />
</rule>
<rule name="rule 3y">
<match url="search-results.html"  />
<action type="Rewrite" url="search-results.php"  />
</rule>
<rule name="rule 4y">
<match url="^([A-Za-z0-9_\-]+).html$"  />
<action type="Rewrite" url="pages.php?pageid={R:1}&amp;%{QUERY_STRING}"  />
</rule>

Итак, файл будет выглядеть так:

<?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>
<rewrite>
<rule name="rule 1y">
<match url="index.html"  />
<action type="Rewrite" url="index.php"  />
</rule>
<rule name="rule 2y">
<match url="news.html"  />
<action type="Rewrite" url="news.php"  />
</rule>
<rule name="rule 3y">
<match url="search-results.html"  />
<action type="Rewrite" url="search-results.php"  />
</rule>
<rule name="rule 4y">
<match url="^([A-Za-z0-9_\-]+).html$"  />
<action type="Rewrite" url="pages.php?pageid={R:1}&amp;%{QUERY_STRING}"  />
</rule>
</rewrite>
</system.webServer>
</configuration>

Примечание. Пожалуйста, не заменяйте код напрямую файлом web.config. Просто поместите необходимые строки в ваш файл web.config.

0

После выполнения R&D в течение долгого времени и пробуя различные способы, я нашел решение, вот содержание всего моего web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration><system.webServer>
<defaultDocument enabled="true">
<files>
<clear />
<add value="index.php" />

</files>
</defaultDocument>

<rewrite>
<rules>

<rule name="Imported Rule 3" stopProcessing="true">
<match url="^index\.html$" ignoreCase="false" />
<action type="Rewrite" url="index.php" appendQueryString="false" />
</rule>

<rule name="Imported Rule 2" stopProcessing="true">
<match url="^news\.html$" ignoreCase="false" />
<action type="Rewrite" url="news.php" appendQueryString="true" />
</rule>

<rule name="Imported Rule 4" stopProcessing="true">
<match url="^(.*)\.html$" ignoreCase="false" />
<action type="Rewrite" url="pages.php?pageid={R:1}" appendQueryString="false" />
</rule>
</rules>
</rewrite>

</system.webServer><system.data>
<DbProviderFactories>
<remove invariant="MySql.Data.MySqlClient" />
<add name="MySQL Data Provider" invariant="MySql.Data.MySqlClient" description=".Net Framework Data Provider for MySQL" type="MySql.Data.MySqlClient.MySqlClientFactory, MySql.Data, Version=6.3.7.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d" />
</DbProviderFactories>
</system.data>
</configuration>

Это будет очень полезно для человека, который пытается разместить сайт PHP на Window Server

0
По вопросам рекламы [email protected]