API PHP, .htaccess nie działa na serwerze

0

Witam serdecznie,

mam problem z regułami w pliku .htaccess, mianowicie na serwerze lokalnym wszystko działa, ale jak przeniosę API na serwer roboczy to zwraca błąd 404.

Chodzi mi o to, aby po wpisaniu test odpaliło skrypt test.php, a po wpisaniu test/1 odpaliło skrypt test.php/var=1.

Na serwerze lokalnym utworzyłem w głównym folderze plik .htaccess oraz test.php,

.htaccess

RewriteEngine On 

RewriteRule ^test/?$ test.php 
RewriteRule ^test/([0-9]+)/?$ test.php?var=$1 [L]

Plik php po wprowadzeniu pełnego adresu (test.php lub test.php?var=liczba) zwraca to co ma zwracać, natomiast po odwołaniu się do niego wpisując test, wywala 404 - File or directory not found.

Poniżej pełne odwołania:
Localhost
localhost/api/test - zwraca to samo co localhost/api/test.php
localhost/api/test/1 - zwraca to samo co localhost/api/test.php?var=1
Roboczy
192.168.0.200/api/test.php - zwraca to co powinien, natomiast 192.168.0.200/api/test wyrzuca 404
192.168.0.200/api/test.php?var=1 - zwraca to co powinien, natomiast 192.168.0.200/api/test/1 wyrzuca 404

Mógłby ktoś mnie nakierować? O czymś zapomniałem, przy przenoszeniu na serwer roboczy?

Pozdrawiam

0

o tym że konfiguracja serwera powinna być taka sama jak lokalnego?

0

Jak mogę zmienić konfigurację na serwerze roboczym, skoro nie jestem jego administratorem?
Wszystko inne na nim działa, tylko reguły w .htaccess się sypią. Nigdy wcześniej nie miałem do czynienia z .htaccessem.

Serwer lokalny mam postawiony na Apache, natomiast roboczy to windows serwer 2016.

Okej, doczytałem, że na IIS zamiast .htaccess używa się web.config. Teraz pytanie, działa to tak samo jak .htaccess (z wyjątkiem tego, że jest napisany w XML)?
Czyli wystarczy, że utworze plik web.config i wrzucę go do odpowiedniego folderu?

1

oooops, chyba jest coś w podobie mod_rewrite dla serwera na windowsach, ale musisz pogadać z adminem tego serwera. Przy okazji lokalny serwer na którym coś piszesz powinien być jak najbardziej zbliżony do roboczego

1

Pogadaj z adminem. Na IIS jest mode rewrite. Można w nim zaimportować plik . htaccess.
Odpowiednikiem .htaccess w IIS jest pilk web.config
Najlepiej odtwórz sobie środowisko testowe lokalnie zgodnie ze środowiskiem produkcyjnym.

0

Chwilowo nie mam kontaktu z administratorem, jednak jeśli dobrze rozumiem, to zamiast importować .htaccessa w IIS to mogę utworzyć web.config na tych samych zasadach co .htaccess? Czyli wrzucam go do folderu z API? Czy muszę dodać to do mode rewrite?

1

W IIS musi być zainstalowany URLrewrite. Poza tym w tym pliku mogą być zawarte dodatkowe informacje jak np. lokalizacja wykonywalnego pliku PHP, itd.
Poczytaj tu:
https://www.iis.net/downloads/microsoft/url-rewrite

0

Problem rozwiązany, doinstalowaliśmy tego URL Rewrite i za pomocą tego konwertuję sobie zawartość z .htaccess do Web.config. Plik wrzucam bezpośrednio do folderu z API (lub jak w moim przypadku do poszczególnych wersji) i nie muszę nic więcej w IIS Managerze robić.

Dziękuję wszystkim za pomoc.

1 użytkowników online, w tym zalogowanych: 0, gości: 1