Я занимаюсь разработкой API с использованием библиотеки Luracast Restler.Все, что я ищу, это чтобы файл index.php был «скрыт» от моих URL, чтобы соответствовать стандартам RESTful API.ПРИМЕЧАНИЕ !: да, у меня включен mod_rewrite, и да, у меня есть файл .htaccess в каталоге.У меня не было абсолютно никаких проблем с выполнением этого на моем компьютере, но при перемещении его в производственную среду для некоторого базового тестирования файл .htaccess, кажется, работает по-другому, потому что index.php снова требуется в URL!
И моя машина разработки, и моя производственная машина работают под управлением Windows.Оба используют несколько виртуальных хостов.В обоих случаях включен mod_rewrite.
Мой файл .htaccess буквально является предоставленным примером:
DirectoryIndex index.php
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^$ index.php [QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php [QSA,L]
</IfModule>
<IfModule mod_php5.c>
php_flag display_errors Off
</IfModule>
У нас есть идентичные настройки каталога в httpd.conf:
<directory "C:\www">
Options FollowSymLinks -Includes -ExecCGI -Indexes -SymLinksIfOwnerMatch
order allow,deny
Allow from all
AllowOverride All
</directory>
Иэта конфигурация прекрасно работает на моей машине для разработки.Когда я перемещаю его в рабочий каталог, он требует index.php в URL-адресе, чтобы он мог отправить запрос в мой файл index.php.Если я удаляю index.php из URL, я получаю 404 от Apache (не ответ Рестлера).Я также получаю эту ошибку в журналах Apache:
File does not exist: C:/www/api_website_com/public/classname/function
Насколько я понимаю, этот .htaccess должен переписывать мои HTTP-запросы напрямую в index.php, а не искать URL, как если бы это был файл.У кого-нибудь есть мысли?Это должно быть что-то простое, что я пропускаю.
Также обратите внимание, что я не могу включить RewriteLog, так как у меня нет доступа к httpd.conf производственного сервера.