URL路由无法在Windows共享主机中工作,完全适用于本地Apache

时间:2017-04-18 15:33:04

标签: php .htaccess iis server web-config

我正在使用PHP框架来构建我的网站

我在尝试访问下面的喜欢时收到404 - 找不到文件错误。

https://ex.example.com/example

但索引文件是路由和工作完美(链接下面转到索引文件)

https://ex.example.com/

我使用以下网址结构。请注意,.php扩展名被省略为所有框架

https://'domain' / 'module' / 'function' / 'parameter'

我正在努力在windows托管中进行路由,我需要澄清2件事

  1. .htaccess文件是否适用于IIS(Windows)共享服务器?如果不是如何将以下.htaccess转换为web.config代码(我是web.config的新手)。
  2. Options -Indexes
    
    RewriteEngine On
    
    RewriteCond %{REQUEST_FILENAME} !-d
    
    RewriteCond %{REQUEST_FILENAME} !-f
    
    RewriteCond %{REQUEST_FILENAME} !-l
    
    
    RewriteRule !^static index.php [QSA,L]
    
    1. 在Windows共享托管中还有其他我不想考虑的内容吗?
    2. 我正在使用 PHP 5.6

1 个答案:

答案 0 :(得分:1)

IIS上没有.htaccess。您可以使用web.config XML文件。

例如,我在IIS上将此配置与我的虚拟服务器一起使用:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <rewrite>
            <rules>
                <rule name="Rewrite to index.php">
                    <match url="index.php|robots.txt|images|test.php" />
                    <action type="None" />
                </rule>
                <rule name="Rewrite CI Index">
                    <match url=".*" />
                    <conditions>
                        <add input="{REQUEST_FILENAME}" pattern="css|js|jpg|jpeg|png|gif|ico|htm|html" negate="true" />
                    </conditions>
                    <action type="Rewrite" url="index.php/{R:0}" />
                </rule>
            </rules>
        </rewrite>
    </system.webServer>
</configuration>  

另外,您可以在iis.net上看到此帮助部分,了解有关如何将.htaccess翻译为web.config的更多信息:https://www.iis.net/learn/application-frameworks/install-and-configure-php-applications-on-iis/translate-htaccess-content-to-iis-webconfig