【问题标题】:How can I remove the "?" from the url pattern in PHP如何删除“?”来自 PHP 中的 url 模式
【发布时间】:2015-11-13 05:40:33
【问题描述】:

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

对于我通过 Azure 部署的 PHP 应用程序,如何去除 URL 模式中的 ??有了它,我的路由不起作用。当我手动删除 ? 并发送 URL 请求时,它可以正常工作,但是 URL 模式中的 ? 会搞乱我的整个应用程序。

【问题讨论】:

  • 你是如何创建链接的?
  • 很抱歉,我不确定您在问什么。创建它?
  • 你为什么不搜索如何在php中替换这个?
  • str_replace 是你的朋友。
  • 那么您需要找到执行重定向的位置并修复它,如果您找到它但不知道该怎么做,请在此处发布,我们可以提供帮助

标签: php codeigniter azure


【解决方案1】:

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

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:/的小错误,但这应该是逻辑。

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

【讨论】:

  • 奇怪的熊猫,谢谢。太好了……我想我只是不知道该把这个函数放在我的文件结构中的什么位置。
  • 您需要将它放在使用 URL 的例程之前。
  • 我想通了。在 config.php 中,我将启用查询字符串设置为 false。
【解决方案2】:

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

我在 stackoverflow 上发现了与您类似的要求,我利用 this answer,将 .htaccess 内容转换为 web.config,然后在 Azure Web 应用程序上进行测试,它工作正常。但是我没有修改config.phpbase_urlindex_page的设置。

因此,在应用程序的根目录中创建一个名为 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> 然后单击站点管理门户底部导航栏上的重新启动按钮。

【讨论】:

  • 嗨,Gary,我修改了 web.config 使其看起来像这样,并且我的 config.php base_url = 为 ' ' 并且我的 index_page 也等于 ' '。当我点击登录时,它显示的 url 是:phpdiscussionboard.azurewebsites.net/?/dashboard 当我希望它只显示 phpdiscussionboard.azurewebsites.net/dashboard 时。当我手动将 url 更改为仪表板时,我被带到仪表板,可以看到它确实让我登录了。
  • 我想通了。在 config.php 中,我将启用查询字符串设置为 false。
猜你喜欢
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-06-15
  • 1970-01-01
相关资源
最近更新 更多