0

Apache + PHP 앱을 Azure로 마이그레이션하는 데 문제가있어서 연락 드리겠습니다.Azure Web App에서 정책을 다시 작성하십시오.

아파치 재 작성 모듈을 사용하여 요청 URI를 읽고 올바른 URL로 변환했습니다. 이 지침을 IIS 다시 쓰기 규칙으로 변환했지만 Azure에서 작동하지는 못합니다.

규칙은 있었다 :

RewriteEngine on 
RewriteRule ^(zpanel\/)(.*)\.json$ $1.json.php [QSA,L] 
RewriteRule ^(zpanel\/)(.*)\-process\-add$ $1_procesar.php?abm_accion=a [QSA,L] 
RewriteRule ^(zpanel\/)(.*)\-process\-edit\-(.*)$ $1_procesar.php?abm_accion=m&id=$2 [QSA,L] 
RewriteRule ^(zpanel\/)(.*)\-process\-delete\-(.*)$ $1_procesar.php?abm_accion=d&id=$2 [QSA,L] 
RewriteRule ^(zpanel\/)(.*)\-add$ index.php?put=$1_am&abm_accion=a [QSA,L] 
RewriteRule ^(zpanel\/)(.*)\-edit\-(.*)$ index.php?put=$1_am&abm_accion=m&id=$2 [QSA,L] 
RewriteCond %{REQUEST_URI} !(css|js|favicon|img|php|json|icon|process|report|fonts|ckeditor) 
RewriteRule ^(zpanel\/)(.*)$ index.php?put=$1 [QSA,L] 

그래서 내가 그들을 번역했습니다

<rewrite xdt:Transform="InsertIfMissing"> 
    <rules xdt:Transform="InsertIfMissing"> 
     <clear/> 
     <rule name="rule 1d" stopProcessing="true"> 
      <match url="^(zpanel\/)(.*)\.json$" /> 
      <action type="Rewrite" url="/{R:1}{R:2}.json.php" appendQueryString="true" /> 
     </rule> 
     <rule name="rule 1l" stopProcessing="true"> 
      <match url="^(zpanel\/)(.*)\-process\-add$" /> 
      <action type="Rewrite" url="/{R:1}{R:2}_procesar.php?abm_accion=a" appendQueryString="true" /> 
     </rule> 
     <rule name="rule 1x" stopProcessing="true"> 
      <match url="^(zpanel\/)(.*)\-process\-edit\-(.*)$" /> 
      <action type="Rewrite" url="/{R:1}{R:2}_procesar.php?abm_accion=m&amp;id={R:3}" appendQueryString="true" /> 
     </rule> 
     <rule name="rule 1U" stopProcessing="true"> 
      <match url="^(zpanel\/)(.*)\-process\-delete\-(.*)$" /> 
      <action type="Rewrite" url="/{R:1}{R:2}_procesar.php?abm_accion=d&amp;id={R:3}" appendQueryString="true" /> 
     </rule> 
     <rule name="rule 1S" stopProcessing="true"> 
      <match url="^(zpanel\/)(.*)\-add$" /> 
      <action type="Rewrite" url="/{R:1}index.php?put={R:2}_am&amp;abm_accion=a" appendQueryString="true" /> 
     </rule> 
     <rule name="rule 1V" stopProcessing="true"> 
      <match url="^(zpanel\/)(.*)\-edit\-(.*)$" /> 
      <action type="Rewrite" url="/{R:1}index.php?put={R:2}_am&amp;abm_accion=m&amp;id={R:3}" appendQueryString="true" /> 
     </rule> 
     <rule name="Imported Rule 2" stopProcessing="true"> 
      <match url="^(zpanel\/)(.*)$" ignoreCase="false" /> 
      <conditions> 
       <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" /> 
       <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" /> 
       <add input="{URL}" pattern="^/css|js|favicon|img|php|json|icon|process|report|fonts|ckeditor$" ignoreCase="false" negate="true" /> 
      </conditions> 
      <action type="Rewrite" url="{R:1}index.php?q={R:2}" appendQueryString="true" /> 
     </rule> 
    </rules> 

하지만이 후, 나는 푸른에서 동일한 오류 메시지를 가지고 계속. "자료를 찾을 수 없다".

번역이 정상입니까? Azure 버전의 IIS에서 작동하도록 다른 것을 변경해야합니까? 감사합니다.

답변

0

설명 및 오류 메시지에 따르면 번역 결과에 약간의 오류가있을 수 있습니다.

내가 아는 한 IIS는 다시 쓰기 역할을 tranlate 할 수있는 url rewrite module을 가지고 있습니다.

<rewrite> 
    <rules> 
    <rule name="Imported Rule 1" stopProcessing="true"> 
     <match url="^(zpanel\/)(.*)\.json$" ignoreCase="false" /> 
     <action type="Rewrite" url="{R:1}.json.php" appendQueryString="true" /> 
    </rule> 
    <rule name="Imported Rule 2" stopProcessing="true"> 
     <match url="^(zpanel\/)(.*)\-process\-add$" ignoreCase="false" /> 
     <action type="Rewrite" url="{R:1}_procesar.php?abm_accion=a" appendQueryString="true" /> 
    </rule> 
    <rule name="Imported Rule 3" stopProcessing="true"> 
     <match url="^(zpanel\/)(.*)\-process\-edit\-(.*)$" ignoreCase="false" /> 
     <action type="Rewrite" url="{R:1}_procesar.php?abm_accion=m&amp;id={R:2}" appendQueryString="true" /> 
    </rule> 
    <rule name="Imported Rule 4" stopProcessing="true"> 
     <match url="^(zpanel\/)(.*)\-process\-delete\-(.*)$" ignoreCase="false" /> 
     <action type="Rewrite" url="{R:1}_procesar.php?abm_accion=d&amp;id={R:2}" appendQueryString="true" /> 
    </rule> 
    <rule name="Imported Rule 5" stopProcessing="true"> 
     <match url="^(zpanel\/)(.*)\-add$" ignoreCase="false" /> 
     <action type="Rewrite" url="index.php?put={R:1}_am&amp;abm_accion=a" appendQueryString="true" /> 
    </rule> 
    <rule name="Imported Rule 6" stopProcessing="true"> 
     <match url="^(zpanel\/)(.*)\-edit\-(.*)$" ignoreCase="false" /> 
     <action type="Rewrite" url="index.php?put={R:1}_am&amp;abm_accion=m&amp;id={R:2}" appendQueryString="true" /> 
    </rule> 
    <rule name="Imported Rule 7" stopProcessing="true"> 
     <match url="^(zpanel\/)(.*)$" ignoreCase="false" /> 
     <conditions> 
     <add input="{URL}" pattern="(css|js|favicon|img|php|json|icon|process|report|fonts|ckeditor)" ignoreCase="false" negate="true" /> 
     </conditions> 
     <action type="Rewrite" url="index.php?put={R:1}" appendQueryString="true" /> 
    </rule> 
    </rules> 
</rewrite> 

당신은 먼저 IIS 탐색기에서 URL 재 작성 모듈을 클릭 수 :

내가 (당신과 동일하지 않음) 아래로 재 역할을 tranlate, 난 당신이 코드 아래 사용하고 다시 시도 할 수 좋습니다.

그러면 오른쪽에 가져 오기 규칙이 있습니다. 단추를 클릭하면 번역 창이 나타납니다.

enter image description here

관련 문제