【问题标题】:How can I remove empty "?page=" parameter from URL to don't show it如何从 URL 中删除空的“?page =”参数以不显示它
【发布时间】:2022-01-29 00:03:59
【问题描述】:

问候所有我有我的 URL http://localhost/?page= 并且当我有它时我只想要 http://localhost/ 因为它正在为该 URL 加载相同的主页但我不想在 URL 中显示此“/?page=”。我怎样才能做到这一点?因为我试图在我的 PHP 文件夹结构中创建一些 MVC

public function __invoke(){
    $page = (isset($_GET['page']) && !empty($_GET['page'])) ? $_GET['page'] : "home";

    switch ($page) {
        case "home":
            $title = "Home of APP";

            require __DIR__."/../views/includes/main-header.php"; 
                require __DIR__."/../views/home.php"; 
            require __DIR__."/../views/includes/main-footer.php";
        break;

        case "insertCategories":
            $this->category_sub_category_questions->insertCategories("Sitewide Creative");
            $this->category_sub_category_questions->insertCategories("Global Elements");
            $this->category_sub_category_questions->insertCategories("Core Ecommerce Pages");
            $this->category_sub_category_questions->insertCategories("Advanced Ecommerce Features");
            $this->category_sub_category_questions->insertCategories("Brand Pages");
            $this->category_sub_category_questions->insertCategories("Development Environment Setup");
            $this->category_sub_category_questions->insertCategories("Launch and Post-launch");
            $this->category_sub_category_questions->insertCategories("Measurement and Conversion Optimization");
            $this->category_sub_category_questions->insertCategories("Consulting Services");

            echo "Categories Inserted!";
        break;

        default:
            require __DIR__."/../views/errors/404.php"; 
        break;
    }
}

【问题讨论】:

标签: php url url-rewriting get


【解决方案1】:

你可以试试这样的

$url = 'http://localhost/?page=';
echo $this->cleanUrl($url);

/**
 * Clear URL remove empty query strings from it.
 * @Input URL
 * @Return Cleaned URL without empty query strings

*/
public function cleanUrl($url){
    $params = parse_url($url);
    parse_str($params['query'], $query);
    // Remove empty
    $cleanedParams = array_filter($query);
    
    $url = strtok($url, '?');
    $url = rtrim($url, '/');
    if(!empty($cleanedParams)){
        $url = $url.'?'.http_build_query($cleanedParams);
    }
    return $url; 
}

【讨论】:

    【解决方案2】:

    我找到了一个带有 .htaccess 的解决方案,其中包含此代码

    RewriteCond %{QUERY_STRING} ^page=[^&]+&?(.*) [NC]
    RewriteRule ^ %{REQUEST_URI}?%1 [R=302,L]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-08
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-07
      • 2021-08-20
      • 2019-07-22
      相关资源
      最近更新 更多