Autor | Zpráva | ||
---|---|---|---|
polonium Profil * |
#1 · Zasláno: 12. 11. 2011, 17:07:08
Zdravím pánové,
nejdřív nastíním situaci. Jedná se o to, že souborem .htaccess #1 dosáhl jsem stavu, že pokud někdo vstoupí na url example.com tak zdrojovým souborem bude index ve složce www/. Ovsem pokud zadám třeba example.com/nabidka dostanu 404. Za boha nemůzu přijít na to, kde je chyba... Předem díky za rady Zde struktura souborů: root/ apps/ libraries/ www/ .htaccess #2 .htaccess #1 Obsah souboru .htaccess #1: RewriteEngine On RewriteBase / RewriteCond %{HTTP_HOST} ^eshop\.([^.]*)\.([^.]*)$ RewriteRule ^(.*)$ eshop/$1 [L] RewriteCond %{HTTP_HOST} ^([^.]*)\.([^.]*)$ RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301] RewriteRule ^(.*)$ www/$1 [L] Obsah souboru .htaccess #2 https://github.com/nette/sandbox/blob/master/www/.htaccess |
||
Davex Profil |
#2 · Zasláno: 12. 11. 2011, 17:46:49
Ostatní pravidla z .htaccess #1 a to přesměrování funguje? Vyzkoušej to bez
RewriteBase / .
|
||
polonium Profil |
#3 · Zasláno: 12. 11. 2011, 17:54:37
Davex:
Bez změny. |
||
polonium Profil |
#4 · Zasláno: 12. 11. 2011, 18:01:07 · Upravil/a: polonium
Myslím, že vím, kde je jádro pudla. Zřejmě server nepobírá tyhle dva řádky:
RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f U mě na localu totiž právě tyhle dva řádky nefungujou (error 500) ale třeba na wedosu s cool url nemám problém. |
||
Davex Profil |
#5 · Zasláno: 12. 11. 2011, 18:32:10 · Upravil/a: Davex
Pokud ti to nefunguje na localhostu, tak si v zkus v konfiguraci Apache zapnout rewrite log, ze kterého se dá vyčíst, co se během přepisování děje a proč se přepíše na neexistující soubor.
„U mě na localu totiž právě tyhle dva řádky nefungujou (error 500)“ V těchto podmínkách nevidím problém. Zkus se podívat do error.logu, kde by měly být k této chybě podrobnosti. |
||
polonium Profil |
#6 · Zasláno: 12. 11. 2011, 20:44:46
|
||
Davex Profil |
#7 · Zasláno: 12. 11. 2011, 21:38:23
V logu je vidět, že se ten přepis zacyklí: /nabidka -> index.php -> var/www/hubart/www/index.php -> index.php atd. Zkoušel jsem to a na mém serveru se tak neděje. Nejsou tam nějaká další pravidla, která by to ovlivňovala?
Nevím, čím je to způsobeno, protože neznám podrobně všechny okolnosti, ale můžeš vyzkoušet dvě věci: 1) V .htaccess #1 nastavit: RewriteBase /hubart/ (pokud je kořen serveru hubart.lc v adresáři /var/www/) 2) V .htaccess #2 nastavit: RewriteBase /hubart/www/ (pokud je kořen serveru hubart.lc v adresáři /var/www/) |
||
polonium Profil |
#8 · Zasláno: 13. 11. 2011, 01:41:33
Davex: Mohl by být problém ve špatně nastaveném bindu?
|
||
Davex Profil |
#9 · Zasláno: 13. 11. 2011, 11:37:41
polonium:
Nastavení nameserveru s tím nesouvisí. Z rewrite logu je vidět, že se dvakrát přidává cesta, která by neměla. Asi bude ještě nějaká chyba v konfiguraci Apache, možná špatně nastavený DocumentRoot nebo nějaká další přepisovací pravidla, apod.
|
||
polonium Profil |
#10 · Zasláno: 13. 11. 2011, 13:22:57
soubor /etc/apache2/sites-enabled/default
# Global configuration for server <Directory /var/www/> Options -Indexes FollowSymLinks MultiViews AllowOverride All Order allow,deny allow from all </Directory> ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/ <Directory "/usr/lib/cgi-bin"> AllowOverride None Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch Order allow,deny Allow from all </Directory> ErrorLog /var/log/apache2/error.log # Possible values include: debug, info, notice, warn, error, crit, # alert, emerg. LogLevel warn CustomLog /var/log/apache2/access.log combined # Other virtual Hosts <VirtualHost *:80> UseCanonicalName Off DocumentRoot /var/www ServerName * # http://www.example.com/test.txt -> /var/www/example.com/www/test.txt #VirtualDocumentRoot /var/www/%-2.0.%-1.0/%-3+/ VirtualDocumentRoot /var/www/%-2.0/www/ </VirtualHost> # locahost <VirtualHost *:80> DocumentRoot /var/www ServerName localhost </VirtualHost> |
||
Davex Profil |
#11 · Zasláno: 13. 11. 2011, 13:48:20
Bude to tím
VirtualDocumentRoot , který rovnou nasměrovává do adresáře /var/www/hubart/www/, takže se .htaccess #1 vůbec nebude provádět a v .htaccess #2 by mělo být zapnuté:
RewriteBase / |
||
polonium Profil |
#12 · Zasláno: 13. 11. 2011, 15:40:10
Super, funguje to :) Moc děkuju
|
||
Časová prodleva: 16 dní
|
|||
polonium Profil |
Zdravíčko pánové,
chtěl bych se zeptat, jak je možné, že když ve firefoxu zadám adresu hubart.cz tak dostanu hlášku: "Při pokusu kontaktovat server www.t.cz vypršel časový limit." s www na začátku tenhle problém není. V chromu tenhle problém nemám. Může být problém v nastavení htaccess v rootu? RewriteEngine On #RewriteBase / RewriteCond %{HTTP_HOST} ^eshop\.([^.]+)\.([^.]+)$ RewriteRule ^(.*)$ eshop/$1 [L] RewriteCond %{HTTP_HOST} ^[^.]*(?<!www)\.?([^.]+)\.([^.]+)$ RewriteRule ^(.*)$ w>ww.%{HTTP_HOST}/$1 [R=301,L] RewriteRule ^(.*)$ www/$1 [L] Moderátor Davex: Vkládej prosím kódy mezi značky [pre] a [/pre] (stačí kliknout na ).
|
||
Davex Profil |
#14 · Zasláno: 29. 11. 2011, 20:20:12
Chybí protokol na řádku:
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] |
||
polonium Profil |
#15 · Zasláno: 29. 11. 2011, 20:37:00
Bohužel tím to není :(
|
||
Davex Profil |
#16 · Zasláno: 29. 11. 2011, 20:50:07 · Upravil/a: Davex
polonium:
Přesměrování 301 si prohlížeče kešují, takže si zkus vymazat keš nebo vyzkoušej jiný prohlížeč. Přes http://web-sniffer.net/ je to už dobře. |
||
polonium Profil |
#17 · Zasláno: 30. 11. 2011, 09:04:26
Hahaa, takže v keši byl háček :D Díky
|
||
Časová prodleva: 12 let
|
0