У меня есть сервер apache2, установленный с PHP CGI для запуска php-скриптов внутри одного из моих каталогов. У меня есть файл .htaccess
со следующим:
RewriteEngine On RewriteRule ^article\/(\d+)\/?$ article.php?id=$1 [NC,QSA]
при вводе URI, например http://www.mysite.com/article/132/
переписывание делает перенаправление, но внутри article.php
Я не могу прочитать $_GET["id"]
( var_dump
из $_GET
/ $_REQUEST
результатов в пустом массиве
на другом сервере у меня есть apache с mod_php – все работает отлично.
Я не уверен на 100%, что причиной этого является CGI, но у меня есть веские основания предполагать
Благодаря!
Это звучит смутно, как mod_negotiation испортить вещи, когда вы этого не хотите. Попробуйте добавить это в свой файл htaccess:
Options -Multiviews
Параметры Multiviews
включают что-то в mod_negotiation, которое пытается угадать, какой ресурс запрашивается после. Когда он видит URI /article/something
а затем видит, что есть файл /article.php
, он предполагает, что вы имели в виду /article.php/something
и обслуживаете это прямо, полностью обходя mod_rewrite.