我的.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"]
这很可能是MultiViews
Web 服务器上的选项处于打开状态的结果。
使用顶部的以下行将其关闭:
Options +FollowSymLinks -MultiViews
选项MultiViews
由在mod_rewrite
之前运行的Apache's content negotiation module
使用,并使 Apache 服务器匹配文件的扩展名。因此,如果/news
是 URL,那么 Apache 将提供/news.php
.