Autor Zpráva
one
Profil
Čau, potřebuji pomoct s mod_rewrite, potřebuji z odkazu example.com/kontakt.php dostat example.com/ kontakt
ale s tím, že když zadám kontakt.php se prostě vždy adresa přepíše na kontakt, a ne aby fungovalo jak kontakt.php tak i kontakt

ještě by bylo dobré aby se to automaticky přepsalo u všech souborů s příponou php, našel jsem tento script:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)/$ $1.php [L]

RewriteCond %{REQUEST_URI} !.[[:alnum:]]+$
RewriteRule ^(.+[^/])$ /$1/ [R=301]

jenže ten nesplňuje moje požadavky

půjde to nějak? dík
temistokles
Profil
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} .php$
RewriteRule ^(.*).php$ /$1/ [R=301, L]

RewriteRule ^(.*)$ $1.php [L]

Toto by IMHO šlo, nemal som možnosť overiť :D
one
Profil
hm, háže to 500, v logu to píše RewriteCond: bad flag delimiters, a to většinou háže, když tam chybí nějaká závorka, nebo tak je tam nějaká mezera a to tady nevidím, tak nevím kde je problém, ale i tak dík ;)
temistokles
Profil
Pred bodky (".") daj lomítka.
one
Profil
temistokles
stále stejný problém :( a píše to pořád to samé

ty jsi to zkoušel? ale u mě by neměl být problém, ostatní pravidla mi fungují...
temistokles
Profil
one
Neskúšal, nie som doma.
one
Profil
temistokles
Aha, tak bych rád chtěl někoho poprosit, aby to otestoval, protože už vážně nevim, kde může být chyba, díky
one
Profil
pomůžete někdo prosím?
Kajman_
Profil *
http://www.dgx.cz/trine/item/hadanka-znate-mod-rewrite
one
Profil
Kajman_
dík, tak jsem použil tohle řešení:

RewriteEngine on

RewriteBase /

RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^.*$ $0.php [L]

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^(.+).php$ $1 [L, R=301, NE]

na wz.cz běží ok, ale na localhostu mi to háže 500 a v logu je opět RewriteCond: bad flag delimiters..
nevíte proč? musí se ještě něco nastavit?

nejspíše je to stejný problém jako poslední přispívající v té diskusi, kterému se ale nedostala odpověď:
http://www.dgx.cz/trine/item/hadanka-znate-mod-rewrite#comment-11492
Kajman_
Profil *
Na localhostu asi težko budete potřebovat přesměrování pro zachování externích odkazů, tak bych jen umazal ty poslední tři řádky :-)

Jinak bych zkusil novější apache a pokud stále nebude %{ENV:REDIRECT_STATUS} k dispozici, tak občas používám nějaký pomocný parametr.

RewriteEngine on
RewriteBase /
RewriteCond %{QUERY_STRING} ^rw=1
RewriteRule ^.*\.php$ - [L]
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^.*$ $0.php?rw=1 [L,QSA]
RewriteCond %{REQUEST_FILENAME} -f
RewriteCond %{REQUEST_METHOD} GET
RewriteRule ^(.+)\.php$ $1 [L, R=301, NE]

Nebo tak nějak.
one
Profil
Kajman_
Dík, no omlouvám se, mod_rewrite je pro mě španělská vesnice :)
one
Profil
a ještě bych měl jeden dotaz ohledně mod_rewrite:
jak by vypadalo pravidlo, aby se z example.com/soubory/4gdfg6/test.jpg?smaz=51659465
přesměrovalo na smazat?soubor=$2&id=$1&kód=$3

dík
one
Profil
pomůžete, prosím? to je poslední dotaz ohledně mod_rewrite, ostatní už jsem vyřešil...děkuji
bukaj
Profil
mohlo by fungovat:
RewriteRule ^soubory/([^/]+)/([^/\.]+\.\w{2,4})?smaz=(.*)$ smazat.php?soubor=$2&id=$1&kod=$3
one
Profil
bukaj
Hm, nefunguje mi to, jenže to je nejspíš moje chyba, protože já předtím mám podobné pravidlo na stažení souboru, tudíž když zadám example.com/soubory/4gdf81/test.jpg?smaz=45451265123
tak mi to nabídné soubor ke stažení, zde je kód:

RewriteRule ^soubory/(.*)/(.*)?smaz=(.*)$ smaz.php?soubor=$2&id=$1&kod=$3

RewriteRule ^soubory/(.*)/(.*)$ /stahni.php?soubor=$2&id=$1

ten tvůj jsem tam samozřejmě také zkoušel, ale stejný problém, nenapadá mě, jak to ošetřit, aby to rozeznalo co přesně chci...díky
one
Profil
uz mi to prijde blbe, ale musim prispevek posunout nahoru, aby se na nej nezapomelo :)

zkousel jsem jiz vice metod, ale bohuzel mi to stale nejde :/
one
Profil
najde se nějaká dobrá duše, co mi s tímto problémem pomůže? děkuji
Kajman_
Profil *
Když si přečtěte manuál k mod rewrite, tak určitě najdete zmínku, že věci za otazníkem nejdou testovat v RewriteRule!

RewriteCond %{QUERY_STRING} ^smaz=([0-9]+)$
RewriteRule ^soubory/([^/]+)/([^/]+)$ smazat.php?soubor=$2&id=$1&kod=%1 [L]
one
Profil
Kajman_
Omlouvám se, a přiznávám se, že tentokrát jsem si manuál nepřečetl, ale děkuji, že jste mě na tohle upozornil, teď to funguje, jak má...

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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