2015-11-06 108 views
0

我在.htaccess中有这段代码,我需要这个转换到Microsoft Azure托管,因为它不起作用。.htaccess(mod_rewrite)和Microsoft azure

 
    RewriteEngine On 

    RewriteCond %{THE_REQUEST} /index\.php[?/\s] 
    RewriteRule ^index\.php$ /en/ [R=301,L] 

    RewriteCond %{THE_REQUEST} /index_cz\.php[?/\s] 
    RewriteRule ^index_cz\.php$ /cz/ [R=301,L] 

    RewriteRule ^/en/?$ index.php [NC,L] 
    RewriteRule ^cz/?$ index_cz.php [NC,L] 

有人可以帮我吗?谢谢你们

回答

0

你需要创建一个web.config与你的重写规则在适当的部分。

我产生从http://htaccesstowebconfig.com/

<rule name="rule 1m" stopProcessing="true"> 
    <match url="^index\.php$" /> 
    <action type="Rewrite" url="//en/" /> 
</rule> 
<rule name="rule 2m" stopProcessing="true"> 
    <match url="^index_cz\.php$" /> 
    <action type="Rewrite" url="//cz/" /> 
</rule> 
<rule name="rule 3m" stopProcessing="true"> 
    <match url="^/en/?$" ignoreCase="true" /> 
    <action type="Rewrite" url="/index.php" /> 
</rule> 
<rule name="rule 4m" stopProcessing="true"> 
    <match url="^cz/?$" ignoreCase="true" /> 
    <action type="Rewrite" url="/index_cz.php" /> 
</rule> 

以下整个web.config文件将类似于此

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="rule 1m" stopProcessing="true"> 
        <match url="^index\.php$" /> 
        <action type="Rewrite" url="//en/" /> 
       </rule> 
       <rule name="rule 2m" stopProcessing="true"> 
        <match url="^index_cz\.php$" /> 
        <action type="Rewrite" url="//cz/" /> 
       </rule> 
       <rule name="rule 3m" stopProcessing="true"> 
        <match url="^/en/?$" ignoreCase="true" /> 
        <action type="Rewrite" url="/index.php" /> 
       </rule> 
       <rule name="rule 4m" stopProcessing="true"> 
        <match url="^cz/?$" ignoreCase="true" /> 
        <action type="Rewrite" url="/index_cz.php" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 
+0

你有机会尝试这个吗? –

+0

文件如何包含: RewriteRule。* - [env = HTTP_AUTHORIZATION:%{HTTP:Authorization}] – PerlDev

0

我建立一个简单的PHP项目来模拟你的重写规则的情况。

根目录:

enter image description here

index.php文件夹中像 '恩' 的内容是:

echo "response in en folder <br />"; var_dump($_GET); 我杠杆@乔RAIO的答案,并稍作修改:

<?xml version="1.0" encoding="utf-8" ?> 
<configuration> 
    <system.webServer> 
     <rewrite> 
      <rules> 
       <rule name="rule 1m" stopProcessing="true"> 
        <match url="^index\.php$" /> 
        <action type="Rewrite" url="/en/" /> <!--modified remove '/'--> 
       </rule> 
       <rule name="rule 2m" stopProcessing="true"> 
        <match url="^index_cz\.php$" /> 
        <action type="Rewrite" url="/cz/" /> <!--modified remove '/'--> 
       </rule> 
       <rule name="rule 3m" stopProcessing="true"> 
        <match url="^/en/?$" ignoreCase="true" /> 
        <action type="Rewrite" url="/index.php" /> 
       </rule> 
       <rule name="rule 4m" stopProcessing="true"> 
        <match url="^/cz/?$" ignoreCase="true" /> <!--modified add '/'--> 
        <action type="Rewrite" url="/index_cz.php" /> 
       </rule> 
      </rules> 
     </rewrite> 
    </system.webServer> 
</configuration> 

当我访问URL如http://{web_site_name}.azurewebsites.net/index_cz.php?a=a&b=b,它返回现场:

response in cz folder array(2) { ["a"]=> string(1) "a" ["b"]=> string(1) "b" }

任何问题,请随时让我知道。