如何删除“?”来自PHP中的url模式

时间:2015-11-13 05:40:34

标签: php codeigniter azure

示例:http://phpdiscussionboard.azurewebsites.net/?/dashboards/dashboard

如何摆脱我通过Azure部署的PHP应用程序的URL模式中的??有了它我的路由不起作用。当我手动删除?并发送URL请求时,它可以正常工作,但是在网址模式中使用?会导致整个应用程序混乱。

2 个答案:

答案 0 :(得分:0)

考虑到您必须替换?第一个实例,您可以使用以下功能:

function replaceFirst( $url, $to, $by ) {

    $url = explode( "/", $url );
    $arr = array();

    for( $i = 0; $i < count($url); $i++ ) {

        $current = $url[ $i ];
        if( $current == $to ) {
            if ( $by == "" ) { continue; }
            else { $current = $by; }
        } else if( $current == null ) { continue; }

        array_push( $arr, $current );

    }

    return implode( $arr, "/" );

}

你可以像这样使用它:replaceFirst("http://phpdiscussionboard.azurewebsites.net/?/dashboards/dashboard", "?", "")它会给你一个像http:/phpdiscussionboard.azurewebsites.net/dashboards/dashboard这样的值。你可以在那里修复http:/的小错误,但这应该是逻辑。

如果这不是您正在寻找的答案,我真的很抱歉,但您提出的问题相当含糊。

答案 1 :(得分:-1)

由于Azure Web Apps使用IIS来托管PHP应用程序,我们可以利用web.config来管理我们的网站。

我在stackoverflow上找到了与你类似的要求,我利用this answer,将.htaccess内容转换为web.config,然后我在Azure Web应用上测试,它运行正常。但我没有修改base_urlindex_pageconfig.php的设置。

因此,在应用程序的根目录中创建一个名为web.confg的文件,其中包含以下内容: <?xml version="1.0" encoding="utf-8" ?> <configuration> <system.webServer> <rewrite> <rules> <rule name="rule 1R" stopProcessing="true"> <match url="^(.*)$" /> <action type="Rewrite" url="/index.php/{R:1}" /> </rule> </rules> </rewrite> </system.webServer> </configuration> 然后单击站点管理门户底部导航栏上的RESTART按钮。