Skocz do zawartości

Mądra głowa w sprawie rewrite


Rekomendowane odpowiedzi

Może znajdzie się mądra głowa (niekoniecznie z Pacanowa) i podpowie.

Otóż w kwestii przekierowań nie używam tego co reszta najczęściej, czyli .htaccess.

Wszyko mam zawarte w plikach podpiętych pod httpd.conf serwera.

I tak w przypadku danego hosta includuję plik z przekierowaniami, np.

 tuż przed zakończenie kodu dla hosta: </VirtualHost> wrzucam includa:

[code/]

 Include "/usr/local/apache/conf/includes/domain.conf"

[/code]

Wpliku "/includes/domain.conf" mam już wszystkie regułki rewrite, podobne do tych jak się używa w .htaccess.

 

I chodzi o to, żeby stworzyć wyjątek i includować plik z regułkami dla wszystkich oprócz jednego IP.

W sieci jest pełno przykładów, ale nie dla linijki typu "include" i ewntualnie tylko przed pojedynczym ogólnym pojedynczym przekierowaniem.

A moja lista przekierowań jest znacznie dłuższa, więc lepszy byłby wyjątek dla "includa". Tyle, że nie bardzo mogę znaleźć przykładu, a eksperymentować za dużo na żywym organiźmie nie jest zdrowo.

Rzecz w tym, że moja lista przekierowań to 301 na inną domenę, a chciałbym zostawić furtkę do eksperymentów ze starą domeną i mieć ją dostępną normalnie wyłącznie spod mojego IP. Dla reszty niech idzie 301.

 

Więc, jeśli jakaś mądra głowa by się znalazła, byłbym wdzięczny.

 

 

 

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Zasadnicze pytanie czy restartujesz serwer HTTP restart|reolad by wczytał konfigurację na nowo ?

 

IMHO Pod poniższymi adresami powinna być odpowiedź:

https://httpd.apache.org/docs/2.0/misc/rewriteguide.html

https://httpd.apache.org/docs/current/mod/mod_rewrite.html

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

A jaka jest róźnica w jaki sposób restartuję HTTPD? Jakbym to nie robił restart jest i serwer idzie z nowej konfiguracji o ile coś w niej zmieniłem. A czy robię to z poziomu WHM, czy komendą SSH nie ma znaczenia.

Te twoje linki to jak linki do wikipedii, co pokazują definicję, a ja potrzebuję konkretnrgo rozwiązania, bo nie mogę za dużo eksperymentować na żywym hoście. Zresztą w tych instrukcjach nie ma ani jednego przykładu odnoszącego się do IP.

 

Takie proste rozwiązenie rewrite wygląda jak:

 

RewriteEngine on
RewriteCond %{REMOTE_ADDR} !=XXX.XX.XX.XX 
RewriteRule ^(.*)$       https://www.nowadomena.com/$1   [L,R=301,NE]

 

Ale ja tych regułek 301 mam z 50 różnch, a nie jedną ogólną. Regułki trzymam w osobnym pliku, który includuję z poziomu hosta. I tak sobie kombinuję jak to zrobić, żeby nie includować tego pliku z regułkami dla jednego IP, a reszta niech widzi co innego. Mam nadzieję, że teraz to brzmi jaśniej.

 

Generalnie nie używam plików htaccess. Jak mam jakieś regułki to wstawiam to w pliku konfiguracyjnym httpd serwera. Wiadomo, htaccess jest mielony za każdym razem jak otwieram byle stronę, a plik httpd serwera tylko raz.

 

 

 

 

 

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

A jaka jest róźnica w jaki sposób restartuję HTTPD?

Nie pytam się o różnice tylko czy to robisz.

 

Te twoje linki to jak linki do wikipedii,

No widzisz, a ja myślałem, ze do oficjalnej dokumentacji serwera HTTP apache.

============

Przykladowo Vesta panel generuje taki plik VirtualHosta dla domeny:

<VirtualHost 35.156.7.36:8080>

    ServerName mydomena.pl
    ServerAlias *.mydomena.pl
    ServerAdmin info@mydomena.pl
    DocumentRoot /home/mydomena/web/mydomena.pl/public_html
    ScriptAlias /cgi-bin/ /home/mydomena/web/mydomena.pl/cgi-bin/
    Alias /vstats/ /home/mydomena/web/mydomena.pl/stats/
    Alias /error/ /home/mydomena/web/mydomena.pl/document_errors/
    #SuexecUserGroup mydomena mydomena
    CustomLog /var/log/apache2/domains/mydomena.pl.bytes bytes
    CustomLog /var/log/apache2/domains/mydomena.pl.log combined
    ErrorLog /var/log/apache2/domains/mydomena.pl.error.log
    <Directory /home/mydomena/web/mydomena.pl/public_html>
        AllowOverride All
        Options +Includes -Indexes +ExecCGI
    </Directory>
    <Directory /home/mydomena/web/mydomena.pl/stats>
        AllowOverride All
    </Directory>

    <IfModule mod_ruid2.c>
        RMode config
        RUidGid mydomena mydomena
        RGroups www-data
    </IfModule>
    <IfModule itk.c>
        AssignUserID mydomena mydomena
    </IfModule>

    Include /home/mydomena/conf/web/apache2.mydomena.pl.conf*

</VirtualHost>


Wiec jeśli reguły zostały by zamieszczane w dodatkowym pliku inkcudowanym jak

Include /home/mydomena/conf/web/apache2.mydomena.pl.conf*

Po restarcie serwera HTTP powinny być uwzględnione.

----

 

Jeszcze w grę może wchodzić kwestia dostępu do określonych katalogów / plików skąd ma być include.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Sorry ale nie rozumiem co twój przykład ma dawać.

Mam hosta jak mmniej więcej w twoim przykładzie, i mam linijkę z include jak w twoim przykładzie. Includowany plik z regułkami działa jak należy. Ale przecież nie o to jak includować pytam, nie o to mi chodzi.

Chodzi o to, żeby plik z regułkami nie był includowany dla jednego IP z mojego stacjonarnego kompa. A dla reszty tak.

Sorry ale twój przykład się do tego nie odnosi.

 

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach


Sorry ale twój przykład się do tego nie odnosi.
Zgadza się. Czytałem pobieżnie i byłem przekonany, że pytasz  o virtual hosta i reguły zamiast w htaccess.

 

Apache 2.4 ma jeszcze warunki IF / ELSE może to ta radę: https://blogs.apache.org/httpd/entry/new_in_httpd_2_4

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Dargre` a negacja not nie wystarczy? Zerknij tutaj https://httpd.apache.org/docs/2.4/howto/access.html

 

Negacja to chyba nie, bo zaneguje dostęp albo w jedną albo w drugą stronę, a ja chcę żeby obie dzałałały.

 

Mion, teraz chyba zrozumiałeś o co mi chodzi. Właśnie coś w stylu if/else by pasowało, ale póki co nic mi nie wychodzi.

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Podeślij jak możesz przykładowy plik na PW/mail (jakub @@ swits . pl), podmien tylko domeny jeśli chcesz.

Tak swoją drogą if'y są obsługiwane przez apacza 2.4, zerknij w link, który wysłałem -> https://httpd.apache.org/docs/2.4/howto/access.html

https://httpd.apache.org/docs/2.4/mod/core.html#if

Odnośnik do komentarza
Udostępnij na innych stronach

Dupło w sensie że mój Apache to 2.2. If/Else  nie jest obsługiwane przez 2.2.

Mógłbym przekompilować Apacha, ale to chyba jeszcze gorzej dla mnie bo mam mnóstwo nainstalowanych osobno dodatkowych rzeczy i wszystko poszłoby się bujać. Takie instalacje to i owszem, na nowym serwerze, powolutku i spokojnie...  Póki co nie mogę sobie pozwolić na wariacje. Może kiedyś.

Mój host w httpd conf jest stosunkowo prosty:

<VirtualHost xxx.xx.xxx.xx:80>
    ServerName domena.com
    ServerAlias www.domena.com
    DocumentRoot /home/domena/public_html
    ServerAdmin webmaster@domena.com
    UseCanonicalName Off
    CustomLog /usr/local/apache/domlogs/domena.com combined
    CustomLog /usr/local/apache/domlogs/domena.com-bytes_log "%{%s}t %I .\n%{%s}t %O ."
    UserDir enabled domena
    <IfModule mod_suphp.c>
        suPHP_UserGroup domena domena
    </IfModule>
    <IfModule !mod_disable_suexec.c>
        <IfModule !mod_ruid2.c>
            SuexecUserGroup guitart guitart
        </IfModule>
    </IfModule>
    <IfModule mod_ruid2.c>
        RMode config
        RUidGid guitart guitart
    </IfModule>
    <IfModule itk.c>
        AssignUserID domena domena
    </IfModule>
    ScriptAlias /cgi-bin/ /home/domena/public_html/cgi-bin/

    Include "/usr/local/apache/conf/includes/domena.conf"    

</VirtualHost>

Tak jak pisałem domena.com jest w całości przekierowana na inną domenę przy użyciu dość długiej listy przekierowań w includowanym pliku "/includes/domena.conf"

Jakby policzyć to jest tam około 70 regułek rewrite 301, i dopiero ostatnia jest globalna, typu:

RewriteRule ^(.*)$       https://www.nowadomena.com/$1   [L,R=301,NE]

Gdyby to była tylko ta ostatnia regułka, to nie byłoby problemu, Ale jest ich dużo więcej i bardziej rozbudowanych.

Cel wiadomy. Chcaiłbym widzieć starą domena.com z mojego jednego IP  bez przekierowania. Reszta świata jest przekierowana na nowadomena.com.

Mam kilka innych domen pod testy, których nikt nie widzi poza moim IP. Ale to akurat jest łatwe do uzyskania.

 

Setki razy grzebałem i grzebię na różnych serwerach, instaluję przeróżne dziwactwa i to dla wielu osób na świecie. No ale wszystkiego jeden człowiek wiedzieć nie może.

Z ciekawości zapytam jescze synka. Jakby nie było magister od sieci rozproszonych z pracą dyplomową dot. zabezpieczania systemów linuxowych, obecnie "Quality Engineer" w pewnej francuskiej korporacji. Tyle, że on zawsze mówił, że do Taty to jeszcze mu daleko, ale to raczej w kontekście programowania.

Ja niestety studiować takich rzeczy nie mogłem, bo w moich młodych czasach komputerów osobistych nawet jeszcze nie było. Zresztą wtedy to ja muzykowałem i wiersze pisałem :D

 

 

 

 

Sorry, nie odpowiadam na PMy

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności