redicrect ze složky app (nasazení nettí aplikace a přesun starého url)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
tatyalien
Člen | 239
+
0
-

Ahoj,
změnil jsem jednu starou aplikaci,která nebyla v nette. Bohužel uživatelé mají uložené staré url na aplikaci v prohlížeči a nedaří se mě přenastavit routa aby je to správně hodilo na novou strukturu.

Staré url: http://example.com/app v novém to potřebuji přehodit na http://example.com

adresářová struktura projetktu:

app
log
temp
vendor
www - v této složce jsou jen styly, js, žádný index.php
index.php = hlavní a jediný index.php
.htaccess

ve složce app mám htaccess aby nebyla přístupná a zde je asi problém…

Order Allow,Deny
Deny from all

Nenapadá vás něco?

Základní routa:

		$router = new RouteList();
		if ($this->container->parameters['consoleMode'])
		{
			$router[] = new CliRouter(array('action' => 'Cron:Matice:Default'));
		}
		else
		{
			$router[] = new Route('<presenter>/<action>[/<id>]', 'Base:Dashboard:Default');
		}
		$router[] = new Route('<presenter>/<action>[/<id>]', 'Base:Dashboard:Default');
		return $router;

Editoval tatyalien (27. 2. 2017 7:56)

CZechBoY
Člen | 3608
+
0
-

No dej na zacatek app/ – pokud chceš potom presmerovat na novou tak pridej jeste priznak Route::ONE_WAY.

Tahle struktura se mi moc nelibi, proc nepouzivas klasicky document root jen tu slozku s index.php bez aplikacnich souboru?

Editoval CZechBoY (27. 2. 2017 8:08)

tatyalien
Člen | 239
+
0
-

Tak ani jedno neprojede:

			$router[] = new Route('app/<presenter>/<action>[/<id>]', 'Base:Dashboard:Default', Route::ONE_WAY);
			$router[] = new Route('app', 'Base:Dashboard:Default', Route::ONE_WAY);

vždy se zobrazí Přístup odmítnut.

dříve jsem měl normálně na základní úrovni index, který přesměrovával do složky www/ kde byl zbytek. Tam pak zůstával v url „www“ a na serveru dlouho nebyla povolena „hezká“ url… nyní už je, ale složky jsem neměnil :)

tatyalien
Člen | 239
+
0
-

Tak jedině co mě zatím jede, je, že když přepíšu natvrdo .htacces ve složce app/

RedirectMatch 301 /app(.*) http://example.com
#Order Allow,Deny
#Deny from all

ale nezdá se mi to dobře :(

CZechBoY
Člen | 3608
+
0
-

OK, počítal jsem s tím, že už rewrite máš vyřešenej když se ptáš na routy…
Proč teda nemůžeš vložit aplikaci někam mimo root a public/www dát jako jedinou viditelnou složku z webu?
U koho hostuješ, že ti tohle nepovolí?

tatyalien
Člen | 239
+
0
-

Tohle je na interním serveru kde je asi 200 aplikací. Bohužel stará aplikace (psaná jen v html / php) měla vše ve složce app a ta kolize je prostě jen v tom názvu :( )

CZechBoY
Člen | 3608
+
0
-

No to stejně neomlouvá proč nemáš document root směrovanej do složky www a ne na celou aplikaci. Pokud je server pod tvojí správou tak už vůbec nechápu proč to nemáš nastavený :)

Prostě přesuň index.php do www, pokud potřebuješ mít assety ve webový složce www (v prohlížeči bude www/images/abc.jpg) tak to udělej přes rewrite nebo udělej složku www ještě ve složce www.

Editoval CZechBoY (27. 2. 2017 11:55)

tatyalien
Člen | 239
+
0
-

Server nemám pod palcem :-) každopádně ano, můžu si pak změnit adresářovou podobu aplikace, ale to stejně neřeší tu složku app…

No nic, rozeslal jsem hromadný email, aby si to uživatelé změnili… :(

CZechBoY
Člen | 3608
+
0
-

Řeší určitě, protože root nebude / ale /www a tam žádná složka app není.

Píšeš že je to na interním serveru – tak ať to „interní“ admini nastaví, ne?

Editoval CZechBoY (27. 2. 2017 12:26)

greeny
Člen | 405
+
+1
-

A jinak ti samozřejmě nic nebrání přejmenovat složku app třeba na src (a změnit to v index.php) :)

tatyalien
Člen | 239
+
0
-

CZechBoY napsal(a):

Řeší určitě, protože root nebude / ale /www a tam žádná složka app není.

Píšeš že je to na interním serveru – tak ať to „interní“ admini nastaví, ne?

V ideálním světě ano a je to běh na dlouhé lokty… já to potřeboval pronto :) takže jsem hold raději poslal ty emaily… protože si pak uživatelé stěžují, že aplikace nejede…