Autor Zpráva
Anonymní
Profil *
Ahoj - mám menší problém. Tímto odkazem: <a href='neco-'>neco</a> se přesunu na jinou stránku. Cchci docílit hezkých url zápisem v .htaccess: RewriteRule ^(.*)-$ detail_clanku.php?id_clanku=$1
jak napsaný odkaz tak i zápis v .htaccess - to funguje, ALE

Tímto odkazem: <a href='neco/'>neco</a> se přesunu na jinou stránku
a v .htaccess mám: RewriteRule ^(.*)/$ detail_clanku.php?id_clanku=$1 A to už je problém.

Jakmile místo mínusu nastavím lomítko, jak v .htaccess tak i v odkazu a cíloá adresa vypadá takto: nekam/neco/ - tak nevím proč, ale cílová stránka je doslova rozebrána - při načítání vyskáčou Javascriptové chyby, nefunguje css - no prostě strašný.
Nedokážu pochopit, proč za použití lomítka místo mínusu nefunguje cílová stránka. Lidičky, pokud víte, v čem je zakopaný pes - budu rád, když mi aspoň napovíte... Díky
Retal
Profil
Všechny cesty v HTML začni lomítkem.
<script type="text/javascript" src="/my.js" />
Anonymní
Profil *
no to bohužel nemohu, protože bych se z toho víš co. mám hafo stránek - nejhorší je, že i obrázky se nezobrazují, prostě, jako bych soubor neco.php nakopíroval do jiné složky a tím přerušil všechny linky...
Thalia
Profil *
Tak to se asi budeš muset vzdát lomítka, protože já osobně jiné řešení než používání absolutních adres v tomto případě neznám. Protože pokud je adresa zadána relativně, tak např. u odkazu na kontakt.html si prohlížeč imho před toto dopíše to co má v adresním řádku, tedy nekam/neco/kontakt.html, což, pokud v adresáři neco nemáš soubor kontakt.html, vyhodí 404ku. Takže v href musí být http://nekam/kontakt.html. Obrázky podobně.
Joker
Profil
Jakmile místo mínusu nastavím lomítko, jak v .htaccess tak i v odkazu a cíloá adresa vypadá takto: nekam/neco/ - tak nevím proč, ale cílová stránka je doslova rozebrána - při načítání vyskáčou Javascriptové chyby, nefunguje css - no prostě strašný.
Důvod je jednoduchý.
Adresa je řekněme vasweb.cz/nekam/neco/, což je ovšem virtuální adresář a ve skutečnosti se stránka přes .htaccess přesměruje na vasweb.cz/detail_clanku.php?id_clanku=neco
zároveň asi máte na stránce vkládaný skript přes relativní adresu:
<script type="text/javascript" src="muj.js"></script>
Jenže nezapomeňte, že se nacházíte ve virtuálním, neexistujícím adresáři!!
Proto se provede pokus o načtení vasweb.cz/nekam/neco/muj.js
Buďto to ten Váš .htaccess bude ignorovat anebo to taky přepíše na vasweb.cz/detail_clanku.php?id_clanku=neco/muj.js, každopádně výsledkem nebude ten soubor co jste chtěl.
Anonymní
Profil *
Zkusil jsem do .htaccess zapsat:
RewriteRule ^(.*)/(.*)/$ http://neco.cz/nekam/detail_clanku.php?id_clanku=$1

Ale v adresním řádku je nakonec: http://neco.cz/nekam/detail_clanku.php?id_clanku=hodnota_promeny

Docela už to přestávám chápat - hledám způsob, abych nemusel přepisovat cesty k obrázkům, css i k javascriptu
Joker
Profil
Jinak jedno řešení by bylo:
Naházet všechny skripty do adresáře třeba script a přes .htaccess potom *.js přesměrovávat do adresáře web/script/

Jenže tentýž problém budete muset řešit se vším, co vkládáte jen přes jméno souboru. Takže externí kaskádové styly a hlavně obrázky.
Joker
Profil
Anonymní
Ale v adresním řádku je nakonec: http://neco.cz/nekam/detail_clanku.php?id_clanku=hodnota_promeny
jojo, to skryté přesměrování (kdy zůstane původní adresa) můžete dělat jen na relativní adresy.
Anonymní
Profil *
Aha, takže my prostě zbývá jen jedinná možnost, a to přepsat všechny obrázky, styly a skripty, tj. jak to psal kolega výše:

z
<script type="text/javascript" src="my.js" />
na
<script type="text/javascript" src="/my.js" />


??? nebo ještě existuje nějaká možnost?
Retal
Profil
Nevím, co je tu ještě potřeba řešit. Prostě začínej všechny cesty lomítkem a máš to vyřešeno. Všechna ostatní řešení jsou složitější. To, že máš "hafo stránek" je tvoje hloupost (používej šablony). Nicméně úpravu můžeš poměrně lehce zautomatizovat, pokud máš editor, který ovládá regexpy ve Find+Replace (a umíš regexpy).
Anonymní
Profil *
Ještě bych poprosil o link, kde se dočtu o spuštění mod_rewrite na lokále + link, ke stažení módu. Díky
Retal
Profil
Mod_rewrite na lokálu s největší pravděpodobností už máš, jen ho musíš aktivovat v httpd.conf (odkomentovat).
Anonymní
Profil *
Mod_rewrite na lokálu s největší pravděpodobností už máš, jen ho musíš aktivovat v httpd.conf (odkomentovat).


mh, ale jak - někde jsem narazil na návod, ale už nnevím, kde. Mám Apache/1.3.23
Thalia
Profil
Odkomentuj řádek
LoadModule rewrite_module modules/mod_rewrite.so
Joker
Profil
Anonymní
Není nic jednoduššího, než otevřít httpd.conf a dát si tam vyhledat mod_rewrite ;-)
Anonymní
Profil *
# Example:
# LoadModule foo_module modules/mod_foo.so
#
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
#LoadModule status_module modules/mod_status.so
#LoadModule info_module modules/mod_info.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule rewrite_module modules/mod_rewrite.so
#LoadModule anon_auth_module modules/mod_auth_anon.so
#LoadModule dbm_auth_module modules/mod_auth_dbm.so
#LoadModule digest_auth_module modules/mod_auth_digest.so
#LoadModule digest_module modules/mod_digest.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule cern_meta_module modules/mod_cern_meta.so
#LoadModule expires_module modules/mod_expires.so
#LoadModule headers_module modules/mod_headers.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule unique_id_module modules/mod_unique_id.so


je tam, ale stále neběží
Thalia
Profil
Odmaž ten #.
Anonymní
Profil *
bohužel neběží - apache jsem vypnul a znovu zapnul, ale stále nic
samuraj
Profil
je potřeba odkomentovat dva řádky (oddělat #):

#LoadModule rewrite_module modules/mod_rewrite.so

#AddModule mod_rewrite.c
Joker
Profil
samuraj
A potom ještě restartovat Apache ;)
Toto téma je uzamčeno. Odpověď nelze zaslat.