如何在 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 重写?