如何在 Windows Azure 上重写 Codeigniter 的 index.php

Posted

技术标签:

【中文标题】如何在 Windows Azure 上重写 Codeigniter 的 index.php【英文标题】:How to rewrite the index.php of Codeigniter on Windows Azure 【发布时间】:2012-04-15 10:42:20 【问题描述】:

如何在 Windows Azure 和 IIS 上删除 codeigniter 中的 index.php

我可以在没有特定模块的情况下重写 Codeigniter 的 index.php 的 URL 吗?

【问题讨论】:

【参考方案1】:

您可以在 web.config 文件中添加重写规则。将以下内容添加到 system.webServer 部分:

<rewrite>
  <rules>
    <rule name="Rule" stopProcessing="true">
      <match url="^(.*)$" 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="^/favicon.ico$" ignoreCase="false" negate="true" />
      </conditions>
      <action type="Rewrite" url="index.php/R:1" appendQueryString="true" />
    </rule>
  </rules>
</rewrite> 

【讨论】:

此设置应该适用于大多数 php 框架(zend 1/2、laravel 等) 这对我不起作用,然后我意识到我将对我的 index.php 文件的引用移动到应用程序文件夹(对于 Codeigniter)中,所以也许要记住的一件好事是这个文件应该是 index.php 文件适合你的地方。【参考方案2】:

在 wwwroot 中创建文件名 web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Imported Rule 1" stopProcessing="true">
                    <match url="^(.*)$" ignoreCase="false" />
                        <conditions logicalGrouping="MatchAll">
                            <add input="REQUEST_FILENAME" matchType="IsDirectory" negate="true" />
                            <add input="REQUEST_FILENAME" matchType="IsFile" negate="true" />
                        </conditions>
                        <action type="Rewrite" url="index.php?url=R:1" appendQueryString="true" />
                </rule>
            </rules>
        </rewrite> 
    </system.webServer>
</configuration>

【讨论】:

【参考方案3】:

您还可以实现其他重写规则,例如

<rule name="a rule">
<match url="^xxx/(.*)/(.*)-(.*)\.xxx" />
<conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
<action type="Rewrite" url="controller/method/R:3" />
</rule>

有一个条件,就是改变 $config['url_protocal']='PATH_INFO';在 config/config.php 这将告诉 URL 重写模块使用重写的 URI 而不是原始 URL,否则您将遇到 404 page not found 问题。

【讨论】:

以上是关于如何在 Windows Azure 上重写 Codeigniter 的 index.php的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 WordPress 配置 Windows Azure 以进行 URL 重写?

如何在 Windows Azure 上设置 Websocket 连接?

如何在Windows Azure上搭建SSTP VPN

如何在Windows Azure上搭建SSTP VPN

无效的命令“重写引擎”

如何在Windows Azure上搭建SSTP VPN