PHP 重写 URL 没有获得正确的访问权限

我有 switch case php 页面来检测 $_GET 函数并在页面之间进行更改。


$page = isset($_GET['p']) ? $_GET['p'] : null;

switch ($page) {

case "advertise":

break;

case "news":

break;

default:

break;

我尝试访问“新闻”,它可以使用http://example.com/?p=news访问。我还在其中创建了一个分页,以便它可以使用http://example.com/?p=news&page=1


现在我想把 url 改成一个友好的http://example.com/news 我创建了这个 htaccess


Options +FollowSymLinks -MultiViews

RewriteEngine On

RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-d

RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)$ index.php?$1 [NC,L]

它适用于通过http://example.com/news访问的基本“新闻”页面。问题是,我无法访问其之间的页面。


http://example.com/news/page=2


它会给我一个默认的“新闻”页面,而不提供该页面的任何页面。


有人可以弄清楚,如何将友好的 SEO url 与 Switch case $_GET 和 htaccess 一起使用?


============================编辑===================


$seourl = $settings['seo_link'];

if($seourl){

    $main_page = explode('/', $_SERVER['REQUEST_URI']);

    $page = substr(strtolower(preg_replace('([^a-zA-Z0-9-/])', '', $main_page[1])), 0, 20);

    $page_cat = isset($main_page[3]) ? $main_page[3] : null;

    $page_cat_name = isset($main_page[2]) ? $main_page[2] : null;

    $page_val = isset($main_page[5]) ? $main_page[5] : null;

}else{

    $main_page = parse_url($_SERVER['REQUEST_URI']);

    if (isset($main_page['query'])){

        parse_str($main_page['query'], $url);

    $pages = array();

    foreach ($url as $key => $value) {

        $pages[] = $url[$key];

    }

    $url_pages = array();

    foreach ($url as $key => $value) {

        $url_pages[] = $key;

    }

    $page = substr(strtolower(preg_replace('([^a-zA-Z0-9-/])', '', $pages['0'])), 0, 20);

    }else{

        $page = '';

    }

    $page_cat = isset($pages[1]) ? $pages[1] : null;

    $page_cat_name = isset($url_pages[1]) ? $url_pages[1] : null;

    $page_val = isset($pages[2]) ? $pages[2] : null;

}

通过使用它,我将能够打开和关闭 SEO url。


如果SEO url 关闭(0)。我可以访问http://example.com/?p=news甚至它的页面http://example.com/?p=news&page=2。工作没有任何问题。


但是,如果SEO 网址打开(1)。我可以访问https://example.com/news但无法访问它的页面http://example.com/news/page/2。它总是会给我这个页面的结果https://example.com/news


谁能帮我。请


MM们
浏览 64回答 1
1回答

阿晨1998

好吧,我找到了解决此问题的方法。首先我们需要在函数 seo url 中添加这段代码$paginates = isset($_GET['page']) ? $_GET['page'] : 1;然后你的网址就会像一个魅力一样工作。谢谢大家帮助我。
打开App,查看更多内容
随时随地看视频慕课网APP