htaccess php get 不起作用



我的.htaccess不适用于GET。它显示"新闻/",但是一旦我转到"新闻/1"或"新闻/1/",它就不起作用。

Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteRule ^/?$    index.php    [NC,L]
RewriteRule ^news/$ news.php
RewriteRule ^news$ news.php
RewriteRule ^news/([a-zA-Z0-9_-]+)/$ news.php?id=$1 [L,QSA]
RewriteRule ^news/([a-zA-Z0-9_-]+)$ news.php?id=$1 [L,QSA]

我的PHP是:

if(!isset($_GET["id"])){
$Article->printArticles();
}else{
$Article->printArticle($_GET["id"]);
}

但它找不到$_GET["id"]但在本地主机上它可以工作。 尝试过 [L,QSA]、[N]、[NC,L] 并且没有这些。

如何找到$_GET["id"]

htaccess 如何查找$_GET["id"]

这很可能是MultiViewsWeb 服务器上的选项处于打开状态的结果。

使用顶部的以下行将其关闭:

Options +FollowSymLinks -MultiViews

选项MultiViews由在mod_rewrite之前运行的Apache's content negotiation module使用,并使 Apache 服务器匹配文件的扩展名。因此,如果/news是 URL,那么 Apache 将提供/news.php.

最新更新