У меня есть сервер 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.