当前位置: 首页 > 知识库问答 >
问题:

. htaccess(mod_rewrite)和Microsoft Azure

耿学义
2023-03-14

我的.htaccess中有这段代码,我需要转换到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]

有人能帮我吗?谢谢各位

共有2个答案

梁宏才
2023-03-14

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

根目录:

而像“en”这样的文件夹中的index.php的内容是:

en文件夹中的“echo”响应

<?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>

当我访问像超文本传输协议://{web_site_name}这样的URL时azurewebsites.net/index_cz.php?a=a

cz文件夹数组中的响应(2){[“a”]=

如有任何问题,请随时通知我。

宇文迪
2023-03-14

您需要在适当的部分使用重写规则创建一个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>
 类似资料:
  • 问题内容: 我正在编写一个小型CMS,以更好地了解它们的工作方式并学习有关PHP的一些新知识。但是,我遇到了一个问题。 我想使用mod_rewrite(尽管如果有人有更好的解决方案,我会尝试使用它)来生成漂亮的干净URL,所以site.com/index.php?page=2可以改为site.com/tools 据我了解,每次添加新页面时,我都需要更改.htaccess文件,这是我遇到问题的地方,

  • 问题内容: 如何使用PHP中特定的.htaccess和mod_rewrite页面强制使用SSL / https。 问题答案: 对于Apache,您可以使用强制SSL : 除非为当前连接启用了SSL上的HTTP(即HTTPS),否则该指令禁止访问。这在启用SSL的虚拟主机或目录中非常方便,可防止配置错误暴露应受保护的内容。使用此指令时,将拒绝所有未使用SSL的请求。 不过,这不会重定向到https。

  • 问题内容: 我没有运气让我的.htaccess与mod_rewrite一起工作。基本上,我要做的就是从“ http://www.example.com ”和“ https://www.example.com ”中删除“ www ”。 如果我缺少任何内容(conf文件等,请通知我,我将对此进行更新) 这是我的.htaccess文件(位于@ / var / www / site / trunk / h

  • 以下是我的htaccess代码: 我需要制定一个重写规则,如下所示:

  • 当我通过codeigniter应用程序进行调试时,错误似乎出现在codeigniter.php中的第308行,如下所示: 谁能告诉我怎么回事吗?

  • 问题内容: 好的,我一直在遇到aws或某些问题,以至于我似乎无法使mod_rewrite正常工作。 仅出于测试目的,我做了以下工作: 1使用AWS控制台从向导部署新的AMI 64位实例 2百胜装的apache 3编辑了/etc/httpd/conf/httpd.conf: 好像 4确保 在文件中且未注释。 5重启apache: 6创建了两个新文件: 包含: 包含: 7.创建文件: 包含(共TOTA