Mam dynamiczną strukturę subdomen, na przykład:
sub1.domain.com/file1
sub2.domain.com/file2
...
subn.somain.com/filen
Szukam rozwiązania jak wyświetlić pod adresem URL sub1.domain.com/file1
wynik wykonania skryptu znajdującego się w folderze głównym - domain.com/file.php?sub=sub1&file=file1
, bez zmiany linku.
Próbowałem htaccess, ale przepisz przekierowania do domain.com/file.php?sub=sub1&file=file1
, ale muszę pozostać na początkowym łączu.
Dziękuję za sugestie.
1 odpowiedź
Wszystko, czego potrzebujesz, to domyślny host, a nie oddzielne wirtualne hosty. Na tym hoście http możesz użyć modułu przepisywania, aby zareagować na żądany host i wewnętrznie przepisać to żądanie, jak chcesz:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^([^.]+)\.example\.com$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^/?(.+)/?$ /file.php?sub=%1&file=$1 [END]
Aby to zadziałało, musisz upewnić się, że domyślny host http faktycznie obsługuje żądania do tych nazw hostów (nazywasz je „subdomenami”). Jest to jednak niezależne od faktycznego przepisywania.
W przypadku, gdy otrzymasz wewnętrzny błąd serwera (stan HTTP 500) za pomocą powyższej reguły, są szanse, że korzystasz z bardzo starej wersji serwera HTTP Apache. Zobaczysz określoną wskazówkę do nieobsługiwanej flagi {X0}} w pliku dziennika błędów serwerów HTTP w tym przypadku. Możesz spróbować uaktualnić lub użyć starego flagi [L]
, prawdopodobnie będzie działać tak samo w tej sytuacji, choć zależy nieco na konfiguracie.
Ta implementacja będzie działać podobnie w konfiguracji hosta HTTP serwerów lub wewnątrz dynamicznego pliku konfiguracyjnego (plik ".htaccess"). Oczywiście moduł przepisywania musi być załadowany wewnątrz serwera HTTP i włączony w hoście HTTP. W przypadku korzystania z dynamicznego pliku konfiguracyjnego musisz dbać, że interpretacja jest włączona w ogóle w konfiguracji hosta i jest umieszczona w folderze hosta DOCUMENT_ROOT
.
I ogólna uwaga: Zawsze powinieneś umieścić takie reguły w konfiguracji hostacyjnej serwerów HTTP zamiast korzystać z dynamicznych plików konfiguracyjnych (".htaccess"). Te dynamiczne pliki konfiguracyjne dodają złożoność, są często przyczyną nieoczekiwanego zachowania, trudne do debugowania i naprawdę spowalniają serwer HTTP. Są one dostarczane tylko jako ostatnia opcja w sytuacjach, w których nie masz dostępu do konfiguracji hosta HTTP serwerów HTTP (czytaj: naprawdę tanich dostawców usług) lub do zastosowań nalegających na pisanie własnych zasad (co jest oczywistym koszmar bezpieczeństwa).
Podobne pytania
Nowe pytania
php
PHP to szeroko stosowany, wysokopoziomowy, dynamiczny, zorientowany obiektowo i interpretowany język skryptowy przeznaczony głównie do tworzenia stron WWW po stronie serwera. Używane w przypadku pytań dotyczących języka PHP.