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



我有切换大小写 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

现在我想将网址更改为友好的网址 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网址与开关大小写$ _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;
}
if($seourl){
function surl($link){
$url = strtolower($link);
$patterns = $replacements = array();
$patterns[0] = '/([?&])p=/i';
$replacements[0] = '/';
$patterns[1] = '/[^a-zA-Z01-9]/i';
$replacements[1] = '/';
$patterns[2] = '/(-+)/i';
$replacements[2] = '/';
$patterns[3] = '/(-$|^-)/i';
$replacements[3] = '';
$url = preg_replace($patterns, $replacements, $url);
return $url;
}
}else{
function surl($link){
return $link;
}
}  

通过使用这个,我将能够打开和关闭SEO网址。

如果SEO 网址已关闭(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

谁能帮我。

好吧,我找到了摆脱此修复的方法。

首先我们需要在函数 SEO URL 中添加此代码

$paginates = isset($_GET['page']) ? $_GET['page'] : 1;

然后,您的网址将像魅力一样工作。谢谢大家对我的帮助。

最新更新