Zadejte hledaný výraz...
Jakub Glos
Webtrh.cz
Vývoj webových stránek na WordPressu a proklientský přístup pro freelancery
Třídenní infromacemi nabitý prezenční + online kurz v Praze od Webtrhu pouze za 2 871 Kč
Více informací

Friendly URL cez htaccess

kajo888
verified
rating uzivatele
15. 2. 2016 22:17:44
Zdravím
na statickom webe využívam htaccess pre prekné url, ktorý z www.niečo.sk/stranka-jedna.html spraví www.nieco.sk/stranka-jedna/
1. Je správne, ak pri zadaní bez lomítka /stranka-jedna presmeruje na /stranka-jedna/ ?
2. Je dobré, ak funguje odkaz aj /stranka-jedna/ aj stranka-jedna.html ? stranka-jedna.html je potom aj v url prehliadači, nepresmeruje sa na /stranka-jedna/
Popr tipy, čomu sa pri tomto vyhnúť, ďakujem za upresnenie
15. 2. 2016 22:17:44
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175133
i-PRESS
verified
rating uzivatele
(2 hodnocení)
15. 2. 2016 22:41:34
Není vhodné mít stejný obsah na 2 URL a to ani v jednom z uvedených případů.
Je prakticky jedno kterou variantu zvolíte, ale jednu si vyberte a druhou variantu ideálně přesměrujte. Pokud to technicky není možné, lze využít tag rel="canonical" a tam uvádět tu preferovanou variantu pro danou stránku, osobně si ale myslím, že je lepší se duplicitám vyhnout.
Tedy pokud /stranka-jedna přesměrujete na /stranka-jedna/ je to v pořádku pokud to tak chcete, ale jestilže chcete využívat verzi bez html (doporučuji), pak byste na ni měl verzi s html přesměrovat.
15. 2. 2016 22:41:34
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175132
kajo888
verified
rating uzivatele
15. 2. 2016 23:27:27
Dakujem, v tom prvom prípade sa to presmeruje nie? Ak sa zmení jedna na jedna/
Teraz mám v htaccess tento kód, viete mi prosím poradiť, čo pridať, aby aj tá .html verzia prešla automaticky na jedna/ ? ďakujem:
Options +MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(+)/$ $1.php
RewriteRule ^(+)/(+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.{1,5}|/)$
RewriteRule (.*)$ /$1/
15. 2. 2016 23:27:27
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175131
i-PRESS
verified
rating uzivatele
(2 hodnocení)
15. 2. 2016 23:47:24
Nemám to kde vyzkouše, Apache nepoužívám, ale ten redirect by měl být nějak takto:
Ve vašem kódu ale nikde nevidím to podstrkávání html souboru na url bez html.. Podle mě by tam mělo být něco takového:
15. 2. 2016 23:47:24
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175130
kajo888
verified
rating uzivatele
15. 2. 2016 23:54:01
Ano vlastne súbory mám s koncovkou .php kvôli formuláru. Tento kód čo ste dali nefunguje. Tie podstránky mám v samostatnom priečinku root/clanky/stranka-jedna.html
15. 2. 2016 23:54:01
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175129
i-PRESS
verified
rating uzivatele
(2 hodnocení)
16. 2. 2016 00:00:21
Cestu si samozřejmě musíte upravit.
Musíte taky zvážit kam to v těch pravidlech dáte, ve Vašem kódu máte v posledním pravidle "L", což znamená, že se další uvedený již neprovede.
Vložte to tedy hned za RewriteEngine On
16. 2. 2016 00:00:21
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175128
kajo888
verified
rating uzivatele
16. 2. 2016 09:34:23
Pridal som to na ako píšete, teraz pri zadaní nieco.sk/stranka.php to skočí na nieco.sk/stranka/ .. vypisuje však chybu Táto webová stránka obsahuje cyklické presmerovanie
Teraz to mám:
Options +MultiViews
RewriteEngine On
RewriteRule ^clanky/(.*).php /clanky/$1/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(+)/$ $1.php
RewriteRule ^(+)/(+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.{1,5}|/)$
RewriteRule (.*)$ /$1/
16. 2. 2016 09:34:23
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175127
i-PRESS
verified
rating uzivatele
(2 hodnocení)
16. 2. 2016 09:46:02
Musíte na to jít systematicky a psát pravidla od začátku za rewriteengine on.
Já Vaši strukturu neznám, o url .../stranka.php nepadla zmínka. Je tam pravidlo na url .../clanky/xyz.
Takovéto podstrkávání typu skrytí přípony souborů předpokládá, že odkazujete na novou verzi, tedy bez .php . Jestliže tam takové odkazy máte napevno, musíte odchytit všechny možné varianty a napřed přesměrovat. Pravidlo pro podstrčení by pak mělo být až po přesměrováních s parametrem "L", tedy aby se dálo htaccess nezpracovával.
---------- Příspěvek doplněn 16.02.2016 v 09:54 ----------
Zkuste to zjednodušit, třeba takto:
a napište, kombinace, které Vám nefungují. třeba to zde otestuje i někdo, kdo má Apache k dispozici, já mám všude NGINX :)
16. 2. 2016 09:46:02
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175126
kajo888
verified
rating uzivatele
16. 2. 2016 13:22:33
No ja mám štruktúru:
Root - www - index.php
- clanky/jedna.php
- clanky/dva.php
Ten posledný kód ktorý ste pridali, pridal som cestu k clankom:
RewriteEngine On
RewriteRule ^/clanky/(.*).php /clanky/$1/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ /$1.php
Adresy www.nieco.sk/clanky/jedna/ fungujú, bez lomítka na konci chyba 404, pri zadaní www.nieco.sk/clanky/jedna.php sa stránka zobrazí, ale odkaz ostáva s .php
16. 2. 2016 13:22:33
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175125
i-PRESS
verified
rating uzivatele
(2 hodnocení)
16. 2. 2016 13:52:04
Napsal kajo888;1267704
ale odkaz ostáva s .php
No právě proto, že jste tam upravil ty články.. To nechte být jak je. V té Vaši úpravě by to matchlo pouze /clanky/jedna.php
Takže třeba takto:
RewriteEngine On
RewriteRule ^(.*).php /$1/
RewriteRule ^(.*)$ /$1/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ /$1.php
Mělo by to řešit i koncové lomítko, vyzkoušejte prosím.
16. 2. 2016 13:52:04
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175124
kajo888
verified
rating uzivatele
16. 2. 2016 13:56:20
Tento funguje ako má, ale vypisuje chybu cyklyckého presmerovania ... v podstate ale zmeni nieco.sk/clanky/jedna.php na nieco.sk/clanky/jedna/ , ak sa nezada na konci lomitko, tiez ho tam prida
RewriteEngine On
RewriteRule ^clanky/(.*).php /clanky/$1/
RewriteRule ^(+)/$ $1.php
RewriteRule ^(+)/(+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.{1,5}|/)$
RewriteRule (.*)$ /$1/
16. 2. 2016 13:56:20
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175123
i-PRESS
verified
rating uzivatele
(2 hodnocení)
16. 2. 2016 14:01:34
A ten výše jste zkoušel?
16. 2. 2016 14:01:34
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175122
kajo888
verified
rating uzivatele
16. 2. 2016 14:11:50
Tiež nefunguje, ak z neho vyhodím riadok RewriteRule ^(.*)$ /$1/ (asi to lomítko) , tak k adrese sa ale pridá asi celá adresa, teda z nieco.sk/clanok/jedna.php to spraví nieco.sk/http://nieco.sk/clanok/jedna/ .. vadí tam to http://nieco.sk/ co sa pridá už za adresu
16. 2. 2016 14:11:50
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175121
i-PRESS
verified
rating uzivatele
(2 hodnocení)
16. 2. 2016 14:15:05
Já totiž pořád nechápu, proč z toho něco vyhazujete, nebo upravujete.. Já to nemám jak zkoušet, potřeboval bych pouze info, která konkrétní varianta z vaší struktury nefunguje.. To že něco nefunguje po úpravě je tak nějak na nic :)
16. 2. 2016 14:15:05
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175120
kajo888
verified
rating uzivatele
16. 2. 2016 14:18:16
Takto to nefunguje vôbec, 412 Precondition Failed .. ak som vyhodil riadok ako som písal vyššie, tá chyba už zmyzla ale robí to to čo popisujem tiež vyššie .. za adresu pridá adresu ešte raz.
Toto nefunguje:
RewriteEngine On
RewriteRule ^(.*).php /$1/
RewriteRule ^(.*)$ /$1/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)/$ /$1.php
Tento môj povodny funguje dobre, bez lomitka presmeruje na s lomitkom, ale ak pridam aj kod pre presmerovanie z .php na / (RewriteRule ^(.*).php /$1/ ) tak je tam tá chyba presmerovania cyklyckeho:
RewriteEngine On
RewriteRule ^(+)/$ $1.php
RewriteRule ^(+)/(+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.{1,5}|/)$
RewriteRule (.*)$ /$1/
16. 2. 2016 14:18:16
https://webtrh.cz/diskuse/friendly-url-cez-htaccess/#reply1175119
Pro odpověď se přihlašte.
Přihlásit