Autor Zpráva
miro25
Profil *
Ahojte, potreboval by som poradiť ako nastaviť .htaccess tak aby odstraňoval koncovky v linkách ako je niečo.html alebo niečo.php.
Pozeral som si aj v diskusii nejaké príspevky ale nič mi nefungovalo tak ako by som potreboval.

Iba toto čiastočne fungovalo:
RewriteRule    ^ref    ref.html

ale to je dosť nepraktické nakoľko by som to musel pre každú súbor nastavovať zvlášť a tiež síce po nastavení tohto funguje link aj bez .html ale funguje aj keď je zadaný.
Davex
Profil
Pravidla pro odstranění přípony ze jména souboru najdeš v komentářích článku Davida Grudla: Hádanka - znáte mod_rewrite?
miro25
Profil *
Davex:
Dík za info, použil som tento spôsob a vyzerá, že 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]


plus som si tam dal toto na odstraňovanie index-u:
RewriteRule  ^(.+/)?index\.(html?|php)$  /$1  [R=301,NC,NE,L]


Len by som bol rád keby sa mi na to niekto pozrel či v tom nie sú nejaké chyby, lebo ja sa v tom nejak moc nevyznám :).
miro25
Profil *
Teraz som zistil, že mi prestal fungovať kontaktný formulár. Neodošle nič a ani keď nevyplním polia tak ich neoznačí. Čo samozrejme pred tým fungovalo.
miro25
Profil *
Použil som len toto:

RewriteEngine On
RewriteBase /

# exists file with extension?
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^.*$ $0.php [L]

RewriteRule  ^(.+/)?index\.(html?|php)$  /$1  [R=301,NC,NE,L]


Môže to tak byť.
miro25
Profil *
Heh tak to asi nie lebo tam mi zas ostane ta koncovka :).
miro25
Profil *
No tak ten prvý problém som už ako tak vyriešil ale ešte by ma zaujímalo ako nastaviť jednu vec a to, že keď bude zadaná nejaká adresa, ktorá nie je správna nezobrazilo by chybu 404 ale presmerovalo by užívateľa na hlavnú stránku a to aj pri zadaní nejakého adresáru, ktorý na serveri existuje.
Keeehi
Profil
Takto?
ErrorDocument 404 http://www.example.com/
miro25
Profil *
A sakra to ma mohlo napadnúť :D.

Díík
miro25
Profil *
Ešte jedna vec ma trápi.

premeniť link www.niečo.sk/index.php?page=home na www.niečo.sk/home.html. No funguje to tak, že na stránke je ten prvý link a po kliknutí naň sa prepíše na ten druhý.
No ale mňa by zaujímalo ako to spraviť aby sa už v stránke zobrazil v tom druhom tvare, bez toho aby som ho tam ja musel ručne zadať.

použil som na to tento príklad:
RewriteEngine On
#RewriteBase /adresar
RewriteCond %{QUERY_STRING} ^page=([^&]+)$
RewriteRule ^index\.php$ %1.html? [R=301,L]
RewriteRule ^([^/]+)\.html index.php?rw=1&page=$1 [L,QSA]

ale mám s nim ešte troška problém, lebo mi to po kliknutí na url prerobí odkaz aj s celou cestou servera. A to aj keď zapnem RewriteBase /.
miro25
Profil *
Vie mi niekto povedať ako upraviť toto tak aby to fungovalo aj bez toho index.php. Lebo ja potrebujem zadávať link ako ?page=niečo

RewriteCond %{QUERY_STRING} ^page=([^&]+)$
RewriteRule ^index\.php$ %1.html? [R=301,L]
RewriteRule ^([^/]+)\.html index.php?rw=1&page=$1 [L,QSA]


ale mám s nim ešte troška problém, lebo mi to po kliknutí na url prerobí odkaz aj s celou cestou servera. A to aj keď zapnem RewriteBase /.
Toto už funguje ako má ale otázka na prevedenie odkazu do pekného formátu stále platí. Lebo neviem ako na to (ak sa to vôbec dá bez databázi) :).
miro25
Profil *
A ešte som zabudol keby to fungovalo ešte aj tak, že tam nebude na konci dávať to .html
miro25
Profil *
Takže sa mi to čiastočne podarilo spraviť:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^page=([^&]+)$
RewriteRule ^(.*)$ %1/? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)\/ /?rw=1&page=$1 [L,QSA]

RewriteRule  ^(.+/)?index\.(html?|php)$  /$1  [R=301,NC,NE,L]


teraz mám len problém, že nech zadám čokoľvek za ten link, ktorý mi to spraví tak to funguje a malo by to hodiť hlášku 404.
napr: www.niečo.sk/test/ je normálna stránka ale keď zadám www.niečo.sk/test/blabla tak to namisto chyby zobrazí obsah stránky www.niečo.sk/test/.

Ak niekto viete kde je problém prosím napíšte,ja sa idem trápiť ďalej.
miro25
Profil *
Takže sa mi to čiastočne podarilo spraviť:

RewriteEngine On
RewriteBase /
RewriteCond %{QUERY_STRING} ^page=([^&]+)$
RewriteRule ^(.*)$ %1/? [R=301,L]
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)\/ /?rw=1&page=$1 [L,QSA]

RewriteRule  ^(.+/)?index\.(html?|php)$  /$1  [R=301,NC,NE,L]


teraz mám len problém, že nech zadám čokoľvek za ten link, ktorý mi to spraví tak to funguje a malo by to hodiť hlášku 404.
napr: www.niečo.sk/test/ je normálna stránka ale keď zadám www.niečo.sk/test/blabla tak to namisto chyby zobrazí obsah stránky www.niečo.sk/test/.

Ak niekto viete kde je problém prosím napíšte,ja sa idem trápiť ďalej.
miro25
Profil *
Tak sa mi to asi podarilo:
RewriteEngine On
RewriteBase /
RewriteRule  ^(.+/)?index\.(html?|php)$  /$1  [R=301,NC,NE,L]
RewriteCond %{QUERY_STRING} ^page=([^&]+)$
RewriteRule ^(.*)$ %1/? [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f

RewriteRule ^(.*)/$ ?rw=1&page=$1 [L,QSA]


Ak by bol niekto taký dobrý a mi to aspoň skontroloval či tam nemám nejaké chyby, ktoré by mohli začať časom robiť problémy.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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

0