Autor | Zpráva | ||
---|---|---|---|
TomasRe Profil |
Dobrý den,
mám problém s přepsáním URL. Chtěl bych, aby se zobrazovalo domena.cz/stranka místo domena.cz/stranka.php. To lze vytvořit: RewriteEngine on RewriteRule ^stranka$ %{DOCUMENT_ROOT}/stranka.php [L] ale když napíšu do vyhledávače ručně "stranka.php", tak se již samozřejmě nepřepíše na "stranka". Proto jsem zkoušel dodat řádek: RewriteRule domena.cz/stranka\.php domena.cz/stranka [R=301] ale bohužel mi přijde, že tento řádek vůbec nevnímá. I kdybych přepsal všechny URL na stránkách, tak stejně budou odkazy z jiných webu zobrazovat na konci .php. Nehledě na to, že kdybych se to dalo takto upravit, nemusel bych v celém webu přepisovat odkazy. Nevíte prosím někdo, jak to ošetřit? |
||
Kajman_ Profil * |
#2 · Zasláno: 29. 9. 2010, 21:07:23
|
||
TomasRe Profil |
#3 · Zasláno: 30. 9. 2010, 09:50:31
Kajman:
Řešení funguje elegantně, ale pouze do doby, než se mi v rootu nějaké php jemnuje stejně jako adresář a řešení s formulářem mi nefunguje vůbec... |
||
Kajman_ Profil * |
#4 · Zasláno: 30. 9. 2010, 11:32:24
se mi v rootu nějaké php jemnuje stejně jako adresář
http://diskuse.jakpsatweb.cz/?action=vthread&forum=31&topic=113947&page=0#2 řešení s formulářem mi nefunguje vůbec... A používáte tam nové adresy? Při odeslání přes post se při 301 data nepředají. http://latrine.dgx.cz/hadanka-znate-mod_rewrite#comment-8917 |
||
TomasRe Profil |
Kajman:
Vím, že všichni píšou, že jim to funguje, proto nechápu, proč mně ne… se mi v rootu nějaké php jemnuje stejně jako adresář http://diskuse.jakpsatweb.cz/?action=vthread&forum=31&topic=113947&page=0#2 Jakmile to tam vložím, tak mi celý web hází chybu 500 řešení s formulářem mi nefunguje vůbec… A používáte tam nové adresy? Při odeslání přes post se při 301 data nepředají. http://latrine.dgx.cz/hadanka-znate-mod_rewrite#comment-8917 používám post, ale to je samé jako ten příklad před tím - hází chybu 500, jediné co "funguje" - problém s názvem (adresář = soubor) a problém s odesíláním. "Funguje": RewriteEngine On RewriteBase / # exists file with extension? RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^.*$ $0.php [L] # redirect, but only once RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ $1 [L,R=301,NE] Ale jakmile tam přidám řádek - RewriteCond %{REQUEST_MET HOD} GET, tedy: RewriteEngine On RewriteBase / # exists file with extension? RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^.*$ $0.php [L] RewriteCond %{REQUEST_MET HOD} GET # redirect, but only once RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ $1 [L,R=301,NE] hned to hodí chybu 500 a stránky se nezobrazí, stejně pak je to s řádkem: DirectorySlash Off Nedokážu si to vysvětlit… Moderátor Davex: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
Kajman_ Profil * |
#6 · Zasláno: 30. 9. 2010, 14:29:22
Ale jakmile tam přidám řádek - RewriteCond %{REQUEST_MET HOD} GET
A kde jste přišel k té mezeře uvnitř method? Když ji tam nevyrobíte, tak to také zlobí? |
||
TomasRe Profil |
#7 · Zasláno: 30. 9. 2010, 14:44:51
Kajman:
To se musím stydět, tak to odesílání funguje... Ale bohužel se tím ještě nevyřešil problém s názvem adresáře... |
||
Kajman_ Profil * |
#8 · Zasláno: 30. 9. 2010, 15:03:35
A jaký je to vlastně problém? Jak se nefungování projevuje? Co je v chybovém logu apache? Co je v rewrite logu? Je na serveru zapnutý modul mod_dir?
|
||
TomasRe Profil |
Kajman:
Problém nastane, když mám v rootu soubor např. pokus.php a pak adresář pokus, který obsahuje další (jiné) soubory. To jsem vytvářel, aby byla cesta "estetická" - doména/pokus.php - při pokračování by pak byla URL doména/pokus/nahled.php. .htaccess nyní vypadá: ErrorDocument 403 http://www.domena/working.php ErrorDocument 404 http://www.domena/working.php RewriteEngine On RewriteBase / # exists file with extension? RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^.*$ $0.php [L] RewriteCond %{REQUEST_METHOD} GET # redirect, but only once RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ $1 [L,R=301,NE] RewriteCond %{HTTP_HOST} ^domena RewriteRule (.*) http://www.domena/$1 [R=301,QSA,L] Bohužel v tomhle se moc (téměř vůbec) nevyznám, takže opravdu nevím, jak zapnout modul mod_dir. A doména je na pipni.cz, takže se k logům nedostanu… |
||
Davex Profil |
#10 · Zasláno: 30. 9. 2010, 18:57:47
TomasRe:
„Problém nastane, když mám v rootu soubor např. pokus.php a pak adresář pokus, který obsahuje další (jiné) soubory.“ Zopakuji a doplním Kajmanovu otázku: za jakých podmínek a jak se ten problém projevuje? Počítač udělá pápá? |
||
TomasRe Profil |
Davex:
Při použití .htaccess: RewriteEngine On RewriteBase / # exists file with extension? RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^.*$ $0.php [L] RewriteCond %{REQUEST_METHOD} GET # redirect, but only once RewriteCond %{ENV:REDIRECT_STATUS} ^$ RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ $1 [L,R=301,NE] mám v rootu soubor se stejným názvem jako složka - tzn. např. je v rootu složka "pokus" obsahující stránky php a vedle (také v rootu) je soubor pokus.php. Jakmile použiji tento .htaccess, místo toho, aby se při kliku otevřela stránka doména/pokus.php (měla by se tedy zobrazit URL doména/pokus) se zobrazí chyba 403 Forbidden. Jediné vysvětlení si beru, že zkusí otevřít doména/pokus - ale chce otevřít složku pokus. A když tam zkusím vložit řádek: DirectorySlash Off tak se neotevře žádná stránka - tedy otevře se stránka s chybou 500. |
||
Davex Profil |
#12 · Zasláno: 30. 9. 2010, 21:31:52 · Upravil/a: Davex
TomasRe:
Aby se nezobrazil obsah existujícího adresáře (tobě se zobrazí chyba 403, protože není výpis souborů povolen), tak je nutné vypnout doplňování lomítka pomocí konfigurační volby DirectorySlash Off . Pokud její přídání do souboru .htaccess způsobí chybu 500, tak není toto nastavení v souboru .htaccess správcem webového serveru povoleno. Asi bude nutné požádat podporu hostingu, aby provedli změnu přímo v konfiguraci Apache.
|
||
TomasRe Profil |
#13 · Zasláno: 30. 9. 2010, 21:44:40
Davex:
Aha, moc děkuji za vysvětlení. Požádám tedy pipni.cz, aby povolili úpravu v .htaccess DirectorySlash Off. Ještě jednou moc děkuji. |
||
Časová prodleva: 13 let
|
0