Autor | Zpráva | ||
---|---|---|---|
marek187 Profil |
Zdravím... potrebujem nejaký kód do .htaccess, ktorý by zrušil koncovku .php a tiež zrušil index.php (aby nevznikala duplicita).
Vačšina kódov čo som skúšal, tak buď vytvorilo cyklické presmerovanie alebo odobralo koncovku .php, ale subor už nenačítalo (chyba 404). |
||
juriad Profil |
#2 · Zasláno: 13. 7. 2015, 02:02:54
Viz Řešení některých častějších problémů (FAQ) » Stránky s adresou bez přípony
Ohledně přesměrování toho index.php, to je jednoduché: RewriteRule ^index\.php$ / [R=301] |
||
marek187 Profil |
OK, jeden problem by bol vyrieseny... avsak aj po tomto navode robi to iste (cache pravidelne cistim ak vykonavam zmeny v .htaccess)... odstrani sice koncovku .php, ale to je vsetko... je nevyhnutne este v .htaccess po jednom presmerovat subory s .php koncovkou na tvar bez nich?
|
||
juriad_ Profil * |
#4 · Zasláno: 13. 7. 2015, 03:35:09
marek187:
Precti si nasledujici odstavec v odkazane strance. Pojednava o presmerovani existujicich stranek na variantu bez koncovky. |
||
marek187 Profil |
#5 · Zasláno: 13. 7. 2015, 04:02:52
juriad:
OK, uz aj to by nejako bolo... ale naskytol sa taky mensi problem, ze na jednej podstranke sa mi nacitava iny subor (tiez .php) a prehliadac vyhadzuje cyklicke presmerovanie... a toto uz neviem ako vyriesit... |
||
juriad_ Profil * |
#6 · Zasláno: 13. 7. 2015, 04:05:11
Ukaz cely .htaccess a cestu ke strance, ktera zlobi.
|
||
marek187 Profil |
Options -Indexes +FollowSymLinks RewriteEngine On RewriteBase / ####### Force SSL ############################################# RewriteCond %{HTTP:HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] ####### Force WWW ############################################# RewriteCond %{HTTP_HOST} !^www\.domena\.sk$ [NC] RewriteRule ^(.*)$ http://www\.%{HTTP_HOST}/$1 [R=301,L] ####### Remove trailing slashes ############################### RewriteCond %{HTTP_HOST} ^(www.)?domena\.sk$ [NC] RewriteRule ^(.*)/$ http://%{HTTP_HOST}/$1 [R=301,L] ####### Remove extension .php ################################# RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^([^.]+)$ /$1.php [L] RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ http://%{HTTP_HOST}/$1 [L,R=301,NE] ####### Remove index.php ###################################### RewriteRule ^index\.php$ / [R=301] ####### Error Documents ####################################### ErrorDocument 404 http://%{HTTP_HOST} Odkaz tu este uvadzat nechcem, lebo stranka nieje oficialne spustena a este ju len pripravujem. Ale v jednoduchosti to popisem tak, ze stranka x.php nacitava pomocou jquery dalsi subor y.php... Avsak ked otvorim hlavnu stranku, resp. x.php tak to vyhadzuje cyklicke presmerovanie... ak otvorim len vsunuty subor, resp. y.php, tak nema s nim problem... Teraz som si vsimol, ze kym ta podstranka vyhadzuje cyklicke presmerovanie a snazim sa to reloadovat, tak stale prida a odobere https, dokolecka... potom ako sa https vystrieda s http tak tam prida na konci lomitko (domena.sk/nazov/) a stale tiez dokolecka... |
||
juriad Profil |
marek187:
Jelikož přesměrováváš vše na https, všude dále změň http an https, aby ses vyhnul zbytečnému přesměrování. Také můžeš sjednotit více pravidel do jednoho: ####### Force WWW and Remove trailing slashes ################# # gets rid of a slash if there is one RewriteCond %{HTTP_HOST} !^www\.domena\.sk$ [NC] RewriteRule ^(.*)/?$ https://www\.%{HTTP_HOST}/$1 [R=301,L] ####### Remove trailing slashes ############################### # needed for case if there is already WWW but also a slash RewriteCond %{HTTP_HOST} ^(www.)?domena\.sk$ [NC] RewriteRule ^(.*)/$ https://%{HTTP_HOST}/$1 [R=301,L] |
||
marek187 Profil |
juriad:
OK, takze upravil som to nasledovne: ####### Force SSL ############################################# RewriteCond %{HTTP:HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [R=301,L] ####### Force WWW ############################################# RewriteCond %{HTTP_HOST} !^www\.domena\.sk$ [NC] RewriteRule ^(.*)$ https://www\.%{HTTP_HOST}/$1 [R=301,L] ####### Remove trailing slashes ############################### RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)/$ /$1 [L,R=301] ####### Remove extension .php ################################# RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^([^.]+)$ /$1.php [L] RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ https://%{HTTP_HOST}/$1 [L,R=301,NE] Zbavil som sa problemu s https, dvojiteho www (www.www.), cyklickeho presmerovania... ale pri tom jednom .php subore stale vyhadzuje chybu 403... ide o to, ze adresar v zlozke ma podobny nazov ako php subor... da sa tomuto nejako zabranit? |
||
Kajman Profil |
Pokud se nechcete odkazovat na adresáře, tak zakažte doplňování lomítka díky mod_dir.
DirectorySlash Off A odstraňte podmínku na 10. řádku. Navíc raději přijtete u všech přesměrování příznak NE, stejně jako u toho posledního. |
||
marek187 Profil |
Tu zlozku som prehodil inam a uz je tento problem nepodstatny.
Radsej by som sa opytal, ci tento kod je sam o sebe spravny (postupnost, zapis a pod.): Options -Indexes +FollowSymLinks RewriteEngine On RewriteBase / ####### Force SSL ############################################### RewriteCond %{HTTP:HTTPS} !1 RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1 [L,R=301,NE] ####### Force WWW ############################################### RewriteCond %{HTTP_HOST} !^www\. [NC] RewriteRule ^(.*)$ https://www\.%{HTTP_HOST}/$1 [L,R=301,NE] ####### Remove .php extension ################################### RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^([^.]+)$ /$1.php [L] ####### Redirect .php extension ################################# RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ https://%{HTTP_HOST}/$1 [L,R=301,NE] ####### Remove index.php ######################################## RewriteRule ^(.*)index\.php$ https://%{HTTP_HOST}/$1 [L,R=301,NE] ####### Error Documents ######################################### ErrorDocument 404 https://%{HTTP_HOST} |
||
Kajman Profil |
Řádky 14-16 bych asi dal až za všechny přesměrování, ale problém by to být neměl, pokud nebudete uvádět adresu /index Také bych přehodil pořadí přesměrování index.php a obecné .php.
Proč máte jako ErrorDocument nastavenou úvodní stranu? Přijde mi lepší informovat uživatele o chybě. |
||
marek187 Profil |
Kajman:
„Řádky 14-16 bych asi dal až za všechny přesměrování“ ####### Remove .php extension ################################### RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^([^.]+)$ /$1.php [L] ####### Redirect .php extension ################################# RewriteCond %{ENV:REDIRECT_STATUS} ="" RewriteCond %{REQUEST_METHOD} =GET RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^(.+)\.php$ https://%{HTTP_HOST}/$1 [L,R=301,NE] Chapem vas spravne, ze je potrebne prehodit 1.-3. a 5.-9. riadok medzi sebou? „Také bych přehodil pořadí přesměrování index.php a obecné .php.“ Co myslite pod tym obecnym? Nestaci zmenit prikaz na RewriteRule ^(.*)index$ ... (bez koncovky .php)?
„Proč máte jako ErrorDocument nastavenou úvodní stranu? Přijde mi lepší informovat uživatele o chybě.“ To je len docasne riesenie, potom to upravim na ErrorDocument 404 https://%{HTTP_HOST}/404
|
||
Časová prodleva: 10 let
|
0