2016-08-29 5 views
0

Ich migriere meine Webanwendung von Apache 2.4.17 zu Microsoft-IIS/7.5. Im Stamm meiner Anwendung befindet sich die .htaccess-Datei, die in Web.config konvertiert werden muss.Converting .htaccess-Datei zu Web.config

Nach zahlreichen Versuchen kann ich keine erfolgreiche Konvertierung durchführen. Microsoft-IIS gibt immer den Fehler 404 - Datei nicht gefunden zurück. Ich habe keine Erfahrung beim Schreiben von Web.config-Dateien, daher würde jede Hilfe von einem erfahrenen Auge sehr geschätzt werden. Hier

ist .htaccess-Datei, die auf Apache fein arbeitet:

php_value post_max_size 70M 

RewriteEngine on 

# In case router is called do nothing 
RewriteRule ^framework/Router.php(.)*$ - [L] 

# Prevents user from making a request to a specific .php file 
RewriteRule ^[A-Za-z/]+.php$ - [F,L] 

# Application index page 
RewriteRule ^$ domov [L] 

# Redirect everything else to Router.php 
RewriteRule ^[A-Za-z/]+$ framework/Router.php [L] 

RewriteRule ^([A-Za-z/]+)([0-9]+)$ framework/Router.php?id=$2 [L] 
RewriteRule ^([A-Za-z/]+)/(page=[0-9]+)$ framework/Router.php?$2 [L] 

Und hier ist mein Versuch, auf das Schreiben Datei Web.config:

<?xml version="1.0" encoding="UTF-8"?> 
<configuration> 
<system.webServer> 
    <rewrite> 
     <rules> 
      <rule name="rule 1G" stopProcessing="true"> 
       <match url="^framework/Router.php(.)*$"/> 
       <action type="Rewrite" url="/-" /> 
      </rule> 
      <rule name="rule 2G" stopProcessing="true"> 
       <match url="^[A-Za-z/]+.php$" /> 
       <action type="Rewrite" url="/-"/> 
      </rule> 
      <rule name="rule 3G" stopProcessing="true"> 
       <match url="^$" /> 
       <action type="Rewrite" url="/domov"/> 
      </rule> 
      <rule name="rule 4G" stopProcessing="true"> 
       <match url="^[A-Za-z/]+$" /> 
       <action type="Rewrite" url="/framework/Router.php"/> 
      </rule> 
      <rule name="rule 5G" stopProcessing="true"> 
       <match url="^([A-Za-z/]+)([0-9]+)$" /> 
       <action type="Rewrite" url="/framework/Router.php?id={R:2}" appendQueryString="true" /> 
      </rule> 
      <rule name="rule 6G" stopProcessing="true"> 
       <match url="^([A-Za-z/]+)/(page=[0-9]+)$" /> 
       <action type="Rewrite" url="/framework/Router.php?{R:2}" appendQueryString="true" /> 
      </rule> 
     </rules> 
    </rewrite> 
</system.webServer> 
</configuration> 

Antwort

0

Sieht aus wie Sie bereits this Artikel bezeichnet haben .

Können Sie bestätigen, wenn Sie die URL-Rewrite-Modul installiert haben: http://www.iis.net/downloads/microsoft/url-rewrite

Ich werde Sie empfehlen Anforderungsfehler zu aktivieren Tracing zu verstehen, was mit den Anfragen geschieht und warum sie scheitern. Sehen Sie diesen Artikel: http://www.iis.net/learn/troubleshoot/using-failed-request-tracing/troubleshooting-failed-requests-using-tracing-in-iis-85

+0

Vielen Dank, ich folgte Ihrer Antwort und jetzt funktioniert es gut. Nur als eine Randnotiz, wenn Sie IIS-Manager nicht installiert haben, ist in dieser Frage abgedeckt: http://StackOverflow.com/questions/30901434/iis-manager-in-windows-10 – hardidoo