Używam nasłuchu HAProxy na 80, aby wysłać żądania do serwera węzła (port: 3000) lub serwera php (4000); Mam również zainstalowany CSF, który ma porty 3000 i 80 dostępne.Jak przekierować do 404, gdy adres URL wskazuje na istniejący folder (bez ukośnego ukośnika). HAproxy lub mod-przepisują powiązane
To działa dobrze, kiedy mogę przeglądać strony w http://example.com/forum/1/page.php
, ale czasami, kiedy przypadkowo wejść example.com/forum/1
(bez końcowy ukośnik), utrzymuje załadunek i ostatecznie prowadzi do strony błędu ERR_CONNECTION_TIMED_OUT
. Pasek adresu pokazuje, że został przekierowany do http://example.com:4000/forum/1/
.
Ponieważ nie mam otwartego portu 4000, gdy wielokrotnie przechodzę do example.com/forum/1
, wywołałoby to blok przez CSF. Moje pytanie brzmi: czy mogę przekierować wszystkie żądania wskazujące na rzeczywisty folder example.com/forum/1
(bez końcowego ukośnika) na stronę 404? Próbowałem dodać regułę przepisywania, aby dołączyć końcowe ukośniki do każdego żądania, ale to by złamało wszystkie moje względne ścieżki (zobacz mój problem na tym post).
To, co chcę wiedzieć, dlaczego został przekierowany na http://example.com:4000/forum/1/
z http://example.com/forum/1
? Czy było spowodowane przez HAproxy?
Niektóre HAProxy config:
frontend all 0.0.0.0:80
timeout client 1h
# use apache2 as default webserver for incoming traffic
default_backend apache2
backend apache2
balance roundrobin
option forwardfor
server apache2 myIpAddress:4000 weight 1 maxconn 1024 check
# server must be contacted within 5 seconds
timeout connect 5s
# all headers must arrive within 3 seconds
timeout http-request 3s
# server must respond within 25 seconds. should equal client timeout
timeout server 25s
Oto moje zasady przepisujące:
RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule^- [L]
RewriteCond %{REQUEST_URI} !^.*\.(jpg|css|js|gif|png)$ [NC]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]
RewriteCond %{THE_REQUEST} /index\.php [NC]
RewriteRule ^([^\.]+)$ $1.php [NC,L]
Czy znalazłeś coś złego w tej odpowiedzi? – anubhava