Jump to content
Sign in to follow this  
dargre`

Mądra głowa w sprawie rewrite

Recommended Posts

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.

 

 

 

Edited by dargre`

Sorry, nie odpowiadam na PMy

Share this post


Link to post
Share on other sites

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

 

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

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

http://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
- Full Stack Developer - :chatownik:

+ Ciekawy VLOG o Dubaju 

Share this post


Link to post
Share on other sites

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 ^(.*)$       http://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

Share this post


Link to post
Share on other sites

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.

Edited by Mion
  • Like 1

HTTP 200 usługi IT - Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL
- Full Stack Developer - :chatownik:

+ Ciekawy VLOG o Dubaju 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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
- Full Stack Developer - :chatownik:

+ Ciekawy VLOG o Dubaju 

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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 ^(.*)$       http://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

 

 

 

 

Edited by dargre`

Sorry, nie odpowiadam na PMy

Share this post


Link to post
Share on other sites

"If" nie obsługiwane przez Apache 2.2, pisałem.

Jest "IfDefine", ale nie widzę możliwości użycia czegoś takiego.


Sorry, nie odpowiadam na PMy

Share this post


Link to post
Share on other sites

Moze by poszło coś w tym snesie, ale jakoś nie działa jak trzeba

SetEnvIfNoCase Remote_Addr "(.xx.xxx.xxx.xxx)" NOTMY_IP=1
<IfDefine NOTMY_IP>
    Include "/usr/local/apache/conf/includes/domena.conf"    
</IfDefine>
Edited by dargre`

Sorry, nie odpowiadam na PMy

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Terms of Use Privacy Policy