2016-01-05 2 views
2

Я создал файл .htaccess для управления доступом к REST api во время разработки на машине OSX с локальным сервером. Тем не менее, фактическая хост-машина, которую мне нужно развернуть, - это Windows-машина с XAMPP. Я взял тот же файл .htaccess и переместил его с сервера разработки на живой сервер и, похоже, не работает должным образом..htaccess перенаправляет работы на OSX локально, но не Windows XAMPP

Вот файл .htaccess содержание:.

<IfModule mod_rewrite.c> 
    RewriteEngine On 
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteRule api/v1/(.*)$ api/v1/api.php?request=$1 [QSA,NC,L] 
</IfModule> 

Файл .htaccess находится в той же директории, что и файл api.php который является единственным в каталоге Поэтому, когда я получить доступ к этой странице организовано от OSX машина, он расположен по адресу:

<IP Address>/RESTDevelopement/api.php

(фактический путь к папке на машине: .../Documents/RESTDevelopment/api.php)

Когда я перехожу по адресу: <IP Address>/RESTDevelopement/api/v1/query/, он отвечает, отправив запрос на <IP Address>/RESTDevelopement/api.php?request=query/

Это прекрасно работает, и я использую его в течение нескольких недель без проблем.

Однако не так с машиной окон ...

На моей машине окна У меня есть запустить сервер XAMPP и я сохранил свой проект в рамках HTDOCS папки. Фактическое расположение:

G:\xampp\htdocs\RESTDevelopment\api.php

я получить доступ к нему так же, как с OSX:

<IP Address>/RESTDevelopement/api.php

Однако, когда я иду на ту же страницу, чтобы использовать API <IP Address>/RESTDevelopement/api/v1/query/ это дает мне ошибка внутреннего сервера.

В файле журнала указано, что он находится в цикле переадресации. Я пытался следовать за петлю с помощью, но это не имеет большого смысла для меня:

[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] add path info postfix: G:/xampp/htdocs/RESTDevelopment/api -> G:/xampp/htdocs/RESTDevelopment/api/v1/query/ 
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] strip per-dir prefix: G:/xampp/htdocs/RESTDevelopment/api/v1/query/ -> api/v1/query/ 
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] applying pattern 'api/v1/(.*)$' to uri 'api/v1/query/' 
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace2] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] rewrite 'api/v1/query/' -> 'api/v1/api.php?request=query/' 
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] split uri=api/v1/api.php?request=query/ -> uri=api/v1/api.php, args=request=query/ 
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] add per-dir prefix: api/v1/api.php -> G:/xampp/htdocs/RESTDevelopment/api/v1/api.php 
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace2] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] strip document_root prefix: G:/xampp/htdocs/RESTDevelopment/api/v1/api.php -> /RESTDevelopment/api/v1/api.php 
[Tue Jan 05 11:41:15.925963 2016] [rewrite:trace1] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c81030/initial] [perdir G:/xampp/htdocs/RESTDevelopment/] internal redirect with /RESTDevelopment/api/v1/api.php [INTERNAL REDIRECT] 
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] [perdir G:/xampp/htdocs/RESTDevelopment/] add path info postfix: G:/xampp/htdocs/RESTDevelopment/api -> G:/xampp/htdocs/RESTDevelopment/api/v1/api.php 
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] [perdir G:/xampp/htdocs/RESTDevelopment/] strip per-dir prefix: G:/xampp/htdocs/RESTDevelopment/api/v1/api.php -> api/v1/api.php 
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] [perdir G:/xampp/htdocs/RESTDevelopment/] applying pattern 'api/v1/(.*)$' to uri 'api/v1/api.php' 
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace2] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] [perdir G:/xampp/htdocs/RESTDevelopment/] rewrite 'api/v1/api.php' -> 'api/v1/api.php?request=api.php' 
[Tue Jan 05 11:41:15.926963 2016] [rewrite:trace3] [pid 6680:tid 1704] mod_rewrite.c(476): [client 10.1.10.70:54696] 10.1.10.70 - - [10.1.10.70/sid#604b00][rid#2c8b018/initial/redir#1] split uri=api/v1/api.php?request=api.php -> uri=api/v1/api.php, args=request=api.php&request=query/ 

Последние 5 линий несколько раз повторяется в журнале, прежде чем давать ошибку перенаправления.

вещей я пытался:

  1. Я убедился, что файл Htaccess читался с помощью очень простого теста
  2. я убедился, что модуль mod_rewrite был правильно работает с очень простым тестом
  3. Я попытался установить RewriteBase на различные каталоги/папки, пытаясь определить, было ли это перенаправлено неправильно ... Я мало знаю об этом, поэтому я стрелял слепо, и это не сработало.
  4. Я искал google в течение некоторого времени, чтобы узнать, есть ли у кого-либо еще эта проблема с XAMPP, но все, кажется, используют согласованные шаблоны.

Примечание: У меня есть AllowOverride All для этой директории.

Спасибо за помощь!

ответ

1

Если api/v1/ не реальный путь затем использовать это правило:

Options -MultiViews 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^api/v1/(.*)$ api.php?request=$1 [QSA,NC,L] 
+1

вау вы правы .... теперь, почему это будет работать на сайте OSX, не на сайте XAMPP? Это очень странно .... –

+0

Не уверен, но может быть этот вариант MultiViews был включен там – anubhava

Смежные вопросы