Fórum Root.cz
Hlavní témata => Sítě => Téma založeno: q 28. 05. 2012, 17:18:47
-
Potrebuji presmerovat vsechny pozadavky na www (TCP 80) jdouci z eth1 na IP lokalniho serveru. Pouzil jsem:
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:80
a funguje to.
Kdyz jdu napr. na http://www.root.cz/ tak je to OK a zobrazi se stranka z lokalniho serveru. Kdyz ale zadam napr. http://www.root.cz/texty/zaklady-linuxu/ tak mi lokalni web server vrati 404 not found.
Chapu, ze dana cesta neexistuje. Da se nejak presmerovat vse do "rootu" web serveru? To uz asi pomoci iptables nevyresim, neslo by to pomoci mod_rewrite?
-
Ano, pravidlo s mod_rewrite na lokálním webovém serveru problém vyřeší.
-
Muzete mi nekdo pomoct s htaccess?
Vytvoril jsem v apachi virtualhost:
# cat /etc/apache2/sites-enabled/abc
NameVirtualHost 192.168.255.1
<VirtualHost 192.168.255.1>
ServerName abc
DocumentRoot /var/www/abc
ErrorLog /var/log/apache2/error_abc
LogLevel warn
CustomLog /var/log/apache2/access_abc combined
Options Indexes FollowSymLinks MultiViews
RewriteEngine On
<Directory /var/www/abc>
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
Na firewallu jsem nastavil presmerovani:
iptables -t nat -A PREROUTING -i wifi0 -p tcp --dport 80 -j DNAT --to 192.168.255.1:80
iptables -A OUTPUT -o wifi0 -j ACCEPT
Ale porad mi nejde to presmerovani v htaccess, prohlizec vzdy zobrazi chybu.
Muj htaccess:
# cat /var/www/abc/.htaccess
RewriteEngine on
RewriteCond %{HTTP_HOST} ! 192.168.255.1
RewriteRule (.*) / [R]
Kde mam chybu?
-
Těžko říct, nepíšete, jakou chybu to zobrazí. Pokud 404, bude asi problém s tím NameVirtualHost. Pokud 500, tak je asi špatně ten RewriteRule, protože skončí v nekonečné smyčce.
-
pouzivam v jedny aplikaci tohle
ErrorDocument 404 /index.php
RewriteEngine on
RewriteRule (^index\.php$|\.css$|\.gif$|\.jpg$|\.png$) - [L,NC]
RewriteRule (.*) /index.php?odkaz=%{HTTP_HOST}/$1 [R=307,QSA,L]
ukladam puvodni adresu do odkazu, protoze se pak s ni pracuje
-
Jinak můžu přidat, co jsem používal dříve, než jsem použil svůj vlastní web server:
DocumentRoot index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ / [L]
Původní adresa zůstane v HTTP_HOST a REQUEST_URI.
-
Jinak můžu přidat, co jsem používal dříve, než jsem použil svůj vlastní web server:
DocumentRoot index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ / [L]
Původní adresa zůstane v HTTP_HOST a REQUEST_URI.
Sakra, jsem to spletl:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^.*$ /index.php [L]
-
vykasli sa na mod_rewrite (v tych konfigurakoch sa nevyzna ani diva svina).
proste si nakopiruj celu stranku root na svoj komp.