Yii2 / PHP / IIS7 - URL重写和文件权限(漂亮的URL问题)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Yii2 / PHP / IIS7 - URL重写和文件权限(漂亮的URL问题)相关的知识,希望对你有一定的参考价值。

我有一个带有以下文本的web.config文件,虽然与我的问题无关...

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Pretty URL">
                    <match url="." ignoreCase="false" />
                    <conditions logicalGrouping="MatchAll">
                        <add input="{REQUEST_FILENAME}" matchType="IsFile" ignoreCase="false" negate="true" />
                        <add input="{REQUEST_FILENAME}" matchType="IsDirectory" ignoreCase="false" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

通常当我在我的Windows机器上开发时,带有我的PHP源的文件夹对所有经过身份验证的用户都有权限,而我Yii2网站中的漂亮URL工作没有任何问题。

现在,我的下一个项目要求我部署在非管理员用户也将使用的Windows机器上,我测试了将Yii2网站部署到一个文件夹,使IUSR用户能够列出,读取和执行文件。

该网站有效,但漂亮的网址没有。

如果我使用常规经过身份验证的用户和SYSTEM权限将文件夹内容复制到另一个位置,它将按预期工作。

我想我缺少一些权限,可以使漂亮的URL与IIS7 URL重写模块一起正常工作,但不确定是什么。

答案

在Linux中,服务器作为特殊用户运行是很常见的。 即使在Windows中我也习惯这种习惯,然后很容易为服务器配置访问权限。用户帐户无关紧要,然后与服务器相关。 然后,web目录中所有文件的所有权必须是web服务器的用户,即“IUSR”。 运行服务器的用户必须在IIS配置中进行调整,如果它与默认IIS用户“IUSR”不同。

仅对于与编辑相关的文件访问,可能需要对所有文件进行一些调整,但如果服务器作为用户运行,则更清楚的是用于编辑和服务器访问的文件访问是两个不同的目的。因此,您甚至可以调整对用户的有限文件的编辑访问权限,同时服务器可以完全访问所有文件。为不同的用户或用户组提供不同的访问权限也没有问题。

有关默认IIS用户的更多详细信息,请阅读Understanding Built-In User and Group Accounts in IIS 7

以上是关于Yii2 / PHP / IIS7 - URL重写和文件权限(漂亮的URL问题)的主要内容,如果未能解决你的问题,请参考以下文章

关于IIS7 URL重写的问题

IIS7 URL 重写 - 添加“www”前缀

URL 重写在 IIS 7 上不起作用

在 IIS7 上使用 Joomla 重写 URL

在 IIS7 中将 URL 从 https:// 重写为 http://

路由与 URL 重写 (IIS7) 性能