2016-02-17 3 views
2

У меня есть домен xyz.com, который размещен на сервере Windows..htaccess to web.config для перезаписи и перенаправления url

Код для 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?

+0

Может ли кто-нибудь помочь? я застрял в них с 8 часов !!! – user3782114

ответ

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

Предоставлено: 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

Я пробовал это, следуя ошибке « Ошибка HTTP 500.19 - Внутренняя ошибка сервера Запрошенная страница недоступна, так как связанные данные конфигурации для страницы недействительны. « – user3782114

+0

Вы правильно инкапсулировали xml? <Конфигурация> user1785684

+0

да Я сделал это вот так – user3782114

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

Для вашей информации весь мой код php загружен в xyz.com/demo/ Код, указанный вами выше, не дает мне никакой ошибки, но когда я набираю xyz.com/demo/index.html в url перенаправляет меня на не найденную страницу – user3782114

+0

Пожалуйста, измените URL-адрес от действия, например '' или '' ... –

+0

Я редактирую коды как ваши требования. Я удалил слэш перед **/index.php ** из '' .. поэтому код теперь выглядит как '' –