Autor Zpráva
polonium
Profil *
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
Ostatní pravidla z .htaccess #1 a to přesměrování funguje? Vyzkoušej to bez RewriteBase /.
polonium
Profil
Davex:
Bez změny.
polonium
Profil
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
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
No moc mi ten rewrite log nepomoh. Co tam mam vlastne najit :(

http://pastebin.com/LbDscEtK
Davex
Profil
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
Davex: Mohl by být problém ve špatně nastaveném bindu?
Davex
Profil
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
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
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
Super, funguje to :) Moc děkuju
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 ^(.*)$ www.%{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
Chybí protokol na řádku:

RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [R=301,L] 
polonium
Profil
Bohužel tím to není :(
Davex
Profil
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
Hahaa, takže v keši byl háček :D Díky

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0