Luracast Restler .htaccess не переписывает запросы с включенным mod_rewrite - PullRequest
0 голосов
/ 23 марта 2012

Я занимаюсь разработкой 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 производственного сервера.

1 Ответ

0 голосов
/ 28 марта 2012

htaccess файлы на этом сервере были настроены как текстовые файлы. По какой-то причине это было сделано - это было простое исправление.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...