Autor Zpráva
xiaoming
Profil
Mam slozku form, kde je index.html, ktery ma jako action form.php.
V htaccess public_html mam
RewriteRule ^(?:form2|form3)(?:/(.*)|/?)$ /form/$1 [L]
Kdyz navstivim form2 nebo form3, dostanu ocekavanou stranku tzn. obsah form/index.html, ale kdyz odeslu formular, dostanu form.php (koren) misto form2(3)/form.php
Jak mam zmenit ten index.html popr. htaccess?
Keeehi
Profil
A na jakou URL se odesílá formulář?
xiaoming
Profil
Formulář se fyzicky nachází na form/form.php, URL bude form2/form.php resp. form3/form.php
Keeehi
Profil
Tak jinak, co je vyplněné v atributů action toho formuláře?
xiaoming
Profil
form.php
juriad
Profil
Jak funguje přepis adres v prohlížeči (například, kam pošle vyplněný formulář):
1) Prohlížeč se podívá na atribut (action) a odstraní vše za #.
2) Pokud je uvedený absolutní protokol (http, https apod.), nic neřeší a považuje celý atribut za adresu
3) Pokud je uvedený relativní protokol (začíná //), doplní k atributu ten aktuální a považuje to za adresu
4) Jinak se odvozuje adresa z aktuální adresy:
5) Pokud začíná lomítkem, vezme se aktuální protokol a doména a za ní se hned připojí adresa z atributu
6) Pokud začíná něčím jiným, vezme se aktuální adresa, odstraní se vše za posledním lomítkem a tam se připlácne obsah atributu.
7) Pokud je action prázdná, použije se aktuální adresa.
8) Před použitím adresy se provede normalizace cesty:
8.1) Pokud adresa obsahuje podvýraz /./, nahradí se tato část za /.
8.2) Pokud adresa obsahuje /něco/../, nahradí se to za /.
8.3) Pokud adresa obsahuje //, nahradí se za /.
9) Část za # z aributu (či aktuální stránky v případě 7) si prohlížeč zapamatuje a doplní ji k aktuální adrese při načítání cílové stránky.

Pokud je aktuální adresa http://example.com/form2 a action="form.php", bude cílová adresa http://example.com/form.php
Pokud je aktuální adresa http://example.com/form2/ a action="form.php", bude cílová adresa http://example.com/form2/form.php

S tímto chováním nemá .htaccess a server obecně vůbec nic společného.
xiaoming
Profil
Díky, k vyřešení problému nakonec stačilo přidat lomítko na konec
RewriteCond %{REQUEST_URI} !(/$|\.) 
RewriteRule (.*) %{REQUEST_URI}/ [R=301,L]

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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