我有 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
谁能帮我。请
阿晨1998