如果有重音,RewriteCond找不到文件

时间:2017-07-06 15:29:00

标签: php .htaccess

我有以下.htaccess文件:

JSON

如果它不是文件或目录,它会将所有内容重定向到index.php。它工作正常,但是当文件名称中有重音时,它会将url重定向到index.php,因此RewriteCond无法检测到它是现有文件。例如(两个文件都存在):

这有效:http://example.com/something.pdf(给我PDF)

但这不是:http://example.com/somethingá.pdf(将我重定向到index.php)

问题是我无法访问Web服务器conf,因为它位于webhosting服务器上。

系统是Windows Server 2008 R2 Web Server Edition Service Pack 1(由PhpInfo提供)

Web服务器:Microsoft-IIS / 7.5

1 个答案:

答案 0 :(得分:0)

根据CD001的评论,我发现IIS可以自动转换.htacess文件,但不会一直100%工作。所以我通过手动将.htaccess文件转换为web.config文件来解决问题。转换后的文件是:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Rule 1">
                    <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" />
                    </conditions>
                    <action type="Rewrite" url="index.php" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>

将其保存为网页根目录中的web.config以使其正常工作并删除.htacess