2016-12-30 17 views
1

私の.htaccessはGETで動作しません。それは "news /"を表示しますが、 "news/1"や "news/1 /"に行くとうまくいきません。htaccess php GET not working

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]のいずれかを試してみました。

htaccessはどのようにして$_GET["id"]を見つけますか?

答えて

3

どのようにhtaccessのルックこれはMultiViewsオプションは、Webサーバー上でONであることの最も可能性の高い結果である$_GET["id"]

を見つけるためのもの。

が一番上にこの行を使用して、それをオフにし

Options +FollowSymLinks -MultiViews 

Option MultiViewsmod_rewriteを実行し、ファイルのApacheサーバの一致の拡張機能を作るApache's content negotiation moduleで使用されます。したがって、/newsがURLの場合、Apacheは/news.phpを提供します。