Переведите .htacess в IIS web.config - PullRequest
       6

Переведите .htacess в IIS web.config

0 голосов
/ 14 февраля 2019

Я пытаюсь создать приложение MVC в php на сервере Windows.

Мое приложение работает в Linux / Apache с файлом .htaccess, и я пытаюсь создать файл web.config для работы с Windows.IIS, но я не могу заставить его работать.

Структура моего приложения

/app
/public
.htaccess

Мой основной .htaccess файл перенаправлен в /public папку

# Base .htaccess 
<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteRule ^$ public/ [L]
   RewriteRule (.*) public/$1 [L]
</IfModule>

ВнутриУ меня есть файл .htaccess.

# app folder Options -Indexes

Внутри public я перенаправляю все через index.php файл с параметрами URL

 # public folder
 <IfModule mod_rewrite.c>
   Options -Multiviews
   RewriteEngine On
   RewriteBase /public
   RewriteCond %{REQUEST_FILENAME} !-d
   RewriteCond %{REQUEST_FILENAME} !-f
   RewriteRule  ^(.+)$ index.php?url=$1 [QSA,L]
 </IfModule>

Я пытался перевести .htaccess черезинструмент для импорта в URL переписать, и результат возвращается 500 error

Это то, что я получаю для базового правила

<rewrite>
  <rules>
     <rule name="Imported Rule 1" stopProcessing="true">
       <match url="^$" ignoreCase="false" />
       <action type="Rewrite" url="public/" />
     </rule>
     <rule name="Imported Rule 2" stopProcessing="true">
       <match url="(.*)" ignoreCase="false" />
       <action type="Rewrite" url="public/{R:1}" />
     </rule>
   </rules>
 </rewrite>

Одна папка внутри приложения не дает мне никаких результатов для Options -Indexes

А это для перенаправления на index.php из общей папки

<rewrite>
   <!--This directive was not converted because it is not supported by IIS: RewriteBase /public.-->
   <rules>
     <rule name="Imported Rule 3" stopProcessing="true">
       <match url="^(.+)$" ignoreCase="false" />
       <conditions>
         <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
         <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
       </conditions>
       <action type="Rewrite" url="index.php?url={R:1}" appendQueryString="true" />
     </rule>
   </rules>
 </rewrite>

Есть идеи по устранению этой ошибки 500?что-то в файле web.config, но я не очень разбираюсь в IIS.ТИА

1 Ответ

0 голосов
/ 15 февраля 2019

Есть идеи, чтобы решить эту ошибку 500?что-то в файле web.config, но я не очень разбираюсь в IIS.

Насколько я знаю, правило перезаписи URL IIS не содержит такую ​​же настройку, как "RewriteBase / public" в.Htaccess.

База IIS rewriteBase рассчитывается автоматически в зависимости от того, где определено правило, поэтому, если вы определите правило в папке / pubic (путь) на вашем сайте, это станет основой для этих правил.

Таким образом, нет необходимости устанавливать базу перезаписи в перезаписи URL в файле web.config, если вы поместите специальный файл web.config в папку publc.

...