Routování při index.php na výchozí nefunguje (ale jiné třebas test.php ano?)
- frosty22
- Člen | 373
Zdravím Vás,
mám problém s přesměrováním na úvodní stránku v případě, že se zadá:
→ tenhle případ je tedy uveden i v QuickStart pomocí routy:
<?php
$router[] = new Route('index.php', array(
'presenter' => 'Homepage',
'action' => 'default',
), Route::ONE_WAY);
?>
což když zadám onu URL, tak mi to vrátí error „No route for HTTP request.“, zajímavé je, že jsem zkusil v Route přepsat index.php na třeba test.php a když jsem zadal http://www.xxx.cz/test.php, tak se mi to přesměrovalo správně.
Dle tohoto faktu soudím, že bude asi problém v .htaccess (?), ale ten zkoušel také růžně modifikovat, dle .htaccessů co jsem našel tady na webu a používám nyní tyto:
V rootu:
RewriteEngine On
RewriteRule ^\.htaccess$ - [F]
RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /document_root/index.php [NC,L]
RewriteCond %{REQUEST_URI} !^/document_root/.*$
RewriteRule ^(.*)$ /document_root/$1
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]
RewriteRule ^document_root/.*$ /document_root/index.php [NC,L]
a potom v oné složce document_root tento:
# disable directory listing
Options -Indexes
# configure PHP
# <IfModule mod_php5.c>
# php_flag magic_quotes_gpc off
# php_flag register_globals off
# php_flag zend.ze1_compatibility_mode off
# </IfModule>
# mod_rewrite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# front controller
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(pdf|js|ico|gif|jpg|png|css|rar|zip|tar\.gz)$ index.php [L]
</IfModule>
Děkuji všem za radu s tímto problémem,
S pozdravem
frosty22
- Vyki
- Člen | 388
Ta doporučovaná adresářová struktura není dogma. Pokud tvůj hosting
nepodporuje nastavení root adresáře, tak je skoro lepší udělat si
adresářovou strukturu po svém. Já to dělám tak, že mám v rootu
index.php, images, css, js, a adresář application, do kterého dám app a
libs. Žádné zbytečné .htaccess nejsou potom potřeba, nehledě na to, že
ovlivňují rychlost aplikace (ale rozhodně méně než větší množství
rout v nette). Chtěl jsem se ale zeptat, proč máš v tom .htaccess tento
řádek: RewriteRule ^\.htaccess$ - [F]
. Každý slušný hosting
má v základní konfiguraci apache toto:
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
takže ten řádek kde zakazuješ přístup k .htaccess souborům by neměl být potřeba.
Editoval Vyki (4. 4. 2010 10:49)
- Ondřej Mirtes
- Člen | 1536
.htaccess potřebuješ do toho adresáře application, abys tam měl
deny from all
.
- frosty22
- Člen | 373
No asi jsme si přímo nerozumněli, kompletní routování pracuje celé aplikace správně, kromě právě té routy na index.php, u které potřebuji aby mě přesměrovala klasicky na hlavní stranu, jako je v Quickstartu..
Proto jsem právě uváděl, že jsem zkoušel třeba home.php v té routě a ta mě přesměrovala správně, ale jakmile tam zadám index.php, tak už to správně nepřesměruje ⇒ Z tohoto důvodu si myslím, že bude problém v .htaccess.
Jinak tento problém mám jak na localhostu, tak i na serveru, takže podporou root adresáře to nebude..
- Ondřej Mirtes
- Člen | 1536
Předělel si adresářovou strukturu:
app/
- bootstrap...
- presenters
- ...
- .htaccess (deny from all)
libs/
- Nette
- dibi
- ...
- .htaccess (deny from all)
css/
gfx/
images/
.htaccess (ten ze Skeletonu, ten, co uvádíš jako druhý)
index.php
Problém bude v tom tvém .htaccessu, který používáš pro přesměrování do podsložky document_root, předělej si tudíž strukturu tak, abys ho vůbec nemusel používat.
- Vyki
- Člen | 388
Ondřej Mirtes napsal(a):
.htaccess potřebuješ do toho adresáře application, abys tam měl
deny from all
.
To je mi jasné, ale moje otázka se týkala toho, proč zakazovat přístup do všech .htaccess v prostoru, když už je to zakázané ve výchozím nastavení apache.
Editoval Vyki (4. 4. 2010 15:51)
- Vyki
- Člen | 388
frosty22 napsal(a):
Jasně, ale Vyki měl namysli pouze řádek:
RewriteRule ^\.htaccess$ – [F]
která zakazuje přístup do .htaccess, což je na „všech“ hostingách stejně zakázáno, takže je to zbytečné..
Přesně to jsem myslel. Jenom jsem se lekl, že existují nějaké hostingy, kde na to zapomněli a musel bych to prověřovat :o)