2015-05-15 5 views
4

Я занимаюсь развертыванием API, который я разработал с помощью APIGILITY, для IIS. Поскольку IIS не поддерживает .htaccess, я пытаюсь создать файл web.config из содержимого файла .htaccess. Я использовал IISv7.5 и попытался установить URL-ревертер для преобразования правил. Но я получаю сообщение об ошибке при конвертации. Ниже приведен файл .htaccess и соответствующее преобразование, которое я получаю от urlRewriter.htaccess rules (mod_rewrite) перевод в правила web.config

файл .htaccess

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ 
RewriteRule ^(.*) - [E=BASE:%1] 
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L] 

преобразованные правила и ошибки, которые я получаю.

<rewrite> 
    <rules> 
    <rule name="Imported Rule 1" stopProcessing="true"> 
     <match url="^.*$" /> 
     <conditions logicalGrouping="MatchAny"> 
     <!--The condition pattern is not supported: -s.--> 
     <!--The condition pattern is not supported: -l.--> 
     <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" /> 
     </conditions> 
     <action type="None" /> 
    </rule> 
    <!--The rule cannot be converted into an equivalent IIS format because of unsupported flags: E--> 
    <!--This rule was not converted because it contains references that are not supported: 'ENV::BASE'--> 
    </rules> 
</rewrite> 

Могу ли я получить помощь по этому поводу?

+2

Я не думаю, что вы по-прежнему нужен сортировки базы в вашем правиле. На самом деле, хорошо ли, если у вас есть правило, чтобы внутренне переписать каждый файл/папку (кроме существующих) в root 'index.php'? –

+1

Использует ли index.php эту переменную среды? Или это просто сложный способ переписать каждый запрос в файл index.php в этом каталоге? – Sumurai8

+0

Вы смогли решить эту проблему? У меня такая же проблема. –

ответ

1

Я нашел решение here

В принципе, установить IIS URL Rewrite extension, а затем создать web.config файл на корень apigility с этим содержанием:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
    <system.webServer> 
     <directoryBrowse enabled="false" /> 
     <httpErrors existingResponse="PassThrough" /> 
     <rewrite> 
      <rules> 
      <clear /> 
      <!-- Rewrite rules to /public by @maartenballiauw *tnx* --> 
      <rule name="TransferToPublic-StaticContent" patternSyntax="Wildcard" stopProcessing="true"> 
       <match url="*" /> 
       <conditions logicalGrouping="MatchAny"> 
       <add input="{REQUEST_URI}" pattern="*assets*" /> 
       <add input="{REQUEST_URI}" pattern="robots.txt" /> 
       </conditions> 
       <action type="Rewrite" url="public/{R:0}" /> 
      </rule> 
      <rule name="TransferToPublic" patternSyntax="Wildcard"> 
       <match url="*" /> 
       <action type="Rewrite" url="public/index.php" /> 
      </rule> 
      </rules> 
     </rewrite> 
     <defaultDocument> 
      <files> 
       <clear /> 
       <add value="index.php" /> 
       <add value="index.html" /> 
      </files> 
     </defaultDocument> 
    </system.webServer> 
</configuration> 
Смежные вопросы