Przykłady plików .htaccess dla popularnych systemów CMS: jak przywrócić domyślny plik

Plik .htaccess to plik konfiguracyjny używany na serwerach WWW Apache do zarządzania ustawieniami strony internetowej bez dostępu do głównej konfiguracji serwera. Dzięki niemu możesz włączać przekierowania, ograniczać dostęp, konfigurować adresy URL przyjazne dla SEO, ustawiać mechanizmy buforowania i wiele więcej — bezpośrednio z katalogu głównego witryny lub dowolnego z jej podkatalogów.
Wiele systemów CMS automatycznie tworzy ten plik podczas instalacji lub dołącza próbkę w dystrybucji.
Jeśli pracujesz z hostingiem, zwłaszcza na serwerze Apache, ważne jest, aby wiedzieć, jak wygląda domyślny plik .htaccess dla różnych systemów CMS. Pomoże Ci to:
-
Sprawdzić, czy wszystko jest poprawne po instalacji;
-
Przywrócić plik, jeśli został przypadkowo usunięty;
-
Zrozumieć, jakie zasady system stosuje „od razu”.
Gdzie znajduje się plik .htaccess
Plik .htaccess zazwyczaj znajduje się w głównym folderze witryny, na przykład:
'/var/www/site.com/public_html/.htaccess'
Jeśli plik brakuje (np. został przypadkowo usunięty), możesz utworzyć go ręcznie pod nazwą .htaccess (nazwa zaczyna się od kropki, bez rozszerzenia).
Otwórz plik w edytorze tekstu (np. Notepad++ lub VS Code).
Nie używaj pakietów biurowych (takich jak MS Word) do edycji, ponieważ mogą one wstawić ukryte znaki, które uszkodzą plik.
Poniżej znajduje się zbiór standardowych plików .htaccess, używanych domyślnie w popularnych systemach CMS. Te przykłady mogą być pomocne, jeśli przypadkowo usunąłeś lub uszkodziłeś oryginalny plik .htaccess i musisz go przywrócić, aby Twoja strona działała poprawnie.
WordPress
Domyślny plik .htaccess dla WordPress umożliwia adresy URL „czyste” i zawiera podstawowe zasady przekierowań:
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Jeśli używana jest multisite z subdomenami (np. site1.example.com, site2.example.com):
# BEGIN WordPress Multisite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# Redirect for multisite (subdomains)
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule ^(wp-(content|admin|includes).*) $1 [L]
RewriteRule ^(.*\.php)$ $1 [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress Multisite
Jeśli używana jest multisite z podkatalogami (np. example.com/site1, example.com/site2):
# BEGIN WordPress Multisite
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
# Redirect for multisite (subdirectories)
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^ - [L]
RewriteRule . index.php [L]
</IfModule>
# END WordPress Multisite
Joomla 2.5-3
Joomla wykorzystuje .htaccess do podstawowej ochrony i konfiguracji SEF:
##
# @package Joomla
# @copyright Copyright (C) 2005 - 2012 Open Source Matters. All rights reserved.
# @license GNU General Public License version 2 or later; see LICENSE.txt
##
##
# PRZECZYTAJ CAŁOŚĆ, JEŚLI WYBIERASZ TEN PLIK!
#
# Linia tuż pod tym fragmentem: 'Options +FollowSymLinks' może powodować problemy
# z niektórymi konfiguracjami serwera. Jest wymagana do użycia mod_rewrite, ale może już być
# ustawiona przez administratora serwera w sposób uniemożliwiający jej zmianę w
# pliku .htaccess. Jeśli jej użycie powoduje błąd serwera, zakomentuj ją (dodaj # do
# początku linii), przeładuj witrynę w przeglądarce i przetestuj swoje adresy URL SEF. Jeśli będą działać,
# oznacza to, że została ustawiona przez administratora serwera i nie musisz jej ustawiać tutaj.
##
## Może być zakomentowana, jeśli powoduje błędy, patrz powyższe uwagi.
Options +FollowSymLinks
## Mod_rewrite w użyciu.
RewriteEngine On
## Początek - Zasady zapisu dla blokowania niektórych typowych luk.
# Jeśli doświadczasz problemów na swojej stronie, zablokuj operacje wymienione poniżej
# To próbuje zablokować najczęstszy typ prób wykorzystania luk w Joomla!
#
# Zablokuj wszelkie skrypty próbujące kodować dane w URL za pomocą base64.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Zablokuj wszelkie skrypty, które zawierają tag <script> w URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Zablokuj wszelkie skrypty próbujące ustawić zmienną PHP GLOBALS przez URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Zablokuj wszelkie skrypty próbujące zmodyfikować zmienną _REQUEST przez URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Zwróć nagłówek 403 Forbidden i pokaż zawartość strony głównej
RewriteRule .* index.php [F]
#
## Koniec - Zasady zapisu dla blokowania niektórych typowych luk.
## Początek - Niestandardowe przekierowania
#
# Jeśli potrzebujesz przekierować niektóre strony lub ustawić kanoniczne przekierowanie z non-www na
# www (lub odwrotnie), umieść ten kod tutaj. Upewnij się, że te
# przekierowania używają poprawnej składni RewriteRule i flagi [R=301,L].
#
## Koniec - Niestandardowe przekierowania
##
# Odkomentuj następną linię, jeśli adres URL serwera
# nie jest bezpośrednio związany ze ścieżkami fizycznych plików.
# Zaktualizuj katalog Joomla! (tylko / dla katalogu głównego).
##
# RewriteBase /
## Początek - Sekcja SEF rdzenia Joomla!.
#
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
#
# Jeśli żądana ścieżka i plik to nie /index.php, a żądanie
# nie zostało już wewnętrznie przekierowane do skryptu index.php,
RewriteCond %{REQUEST_URI} !^/index\.php
# a żądanie dotyczy czegoś w folderze komponentu,
# lub głównego katalogu witryny, lub adresu URL bez rozszerzenia, lub
# żądany adres URL kończy się jednym z wymienionych rozszerzeń.
RewriteCond %{REQUEST_URI} /component/|(/[^.]*|\.(php|html?|feed|pdf|vcf|raw))$ [NC]
# a żądana ścieżka i plik nie odpowiadają bezpośrednio plikowi fizycznemu
RewriteCond %{REQUEST_FILENAME} !-f
# a żądana ścieżka i plik nie odpowiadają bezpośrednio folderowi fizycznemu
RewriteCond %{REQUEST_FILENAME} !-d
# wewnętrznie przekieruj żądanie do skryptu index.php
RewriteRule .* index.php [L]
#
## Koniec - Sekcja SEF rdzenia Joomla!.
Joomla 4-5
W Joomla 4 większą uwagę poświęca się bezpieczeństwu i buforowaniu:
##
# @package Joomla
# @copyright (C) 2005 Open Source Matters, Inc. <https://www.joomla.org>
# @license GNU General Public License version 2 or later; see LICENSE.txt
##
##
# PRZECZYTAJ CAŁOŚĆ, JEŚLI WYBIERASZ TEN PLIK!
#
# Linia 'Options +FollowSymLinks' może powodować problemy z niektórymi konfiguracjami serwera.
# Jest wymagana do użycia Apache mod_rewrite, ale może już być ustawiona przez
# administratora serwera w sposób, który nie pozwala na jej zmianę w tym pliku .htaccess.
# Jeśli jej użycie powoduje błąd strony, zakomentuj ją (dodaj # na początku linii),
# przeładuj stronę w przeglądarce i przetestuj adresy URL SEF. Jeśli będą działać,
# oznacza to, że została ustawiona przez administratora serwera i nie musisz jej
# ustawiać tutaj.
##
## BRAK BŁĘDÓW CSS LUB JAVASCRIPT
#
# Jeśli Twoja strona wygląda dziwnie po włączeniu tego pliku, prawdopodobnie serwer już
# kompresuje pliki CSS i JS i powinieneś zakomentować sekcję GZIP tego pliku.
##
## OPENLITESPEED
#
# Jeśli używasz serwera WWW OpenLiteSpeed, wszelkie zmiany w tym pliku
# nie wejdą w życie, dopóki nie zrestartujesz serwera WWW.
##
## Może być zakomentowana, jeśli powoduje błędy, patrz powyższe uwagi.
Options +FollowSymlinks
Options -Indexes
## Brak listingu katalogów
<IfModule mod_autoindex.c>
IndexIgnore *
</IfModule>
## Ukryj wykrywanie typu MIME w przeglądarkach dla nieznanych typów
<IfModule mod_headers.c>
Header always set X-Content-Type-Options "nosniff"
</IfModule>
## Chroń przed pewnymi żądaniami między origem (ïndzie³e). Więcej informacji można znaleźć tutaj:
## https://developer.mozilla.org/en-US/docs/Web/HTTP/Cross-Origin_Resource_Policy_(CORP)
## https://web.dev/why-coop-coep/
#<IfModule mod_headers.c>
# Header always set Cross-Origin-Resource-Policy "same-origin"
# Header always set Cross-Origin-Embedder-Policy "require-corp"
#</IfModule>
## Wyłącz wbudowany JavaScript podczas bezpośredniego otwierania plików SVG lub ich osadzania za pomocą tagu object
<FilesMatch "\.svg$">
<IfModule mod_headers.c>
Header always set Content-Security-Policy "script-src 'none'"
</IfModule>
</FilesMatch>
## Te dyrektywy są włączane tylko wtedy, gdy moduł Apache mod_rewrite jest włączony
<IfModule mod_rewrite.c>
RewriteEngine On
## Początek - Zasady zapisu dla blokowania niektórych typowych luk.
# Jeśli doświadczasz problemów na swojej stronie, zakomentuj poniższe operacje,
# dodając # na początku linii.
# To próbuje zablokować najczęstszy typ prób wykorzystania luk w Joomla!
#
# Zablokuj wszelkie skrypty próbujące kodować dane w URL za pomocą base64.
RewriteCond %{QUERY_STRING} base64_encode[^(]*\([^)]*\) [OR]
# Zablokuj wszelkie skrypty, które zawierają tag <script> w URL.
RewriteCond %{QUERY_STRING} (<|%3C)([^s]*s)+cript.*(>|%3E) [NC,OR]
# Zablokuj wszelkie skrypty próbujące ustawić zmienną PHP GLOBALS przez URL.
RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]
# Zablokuj wszelkie skrypty próbujące zmodyfikować zmienną _REQUEST przez URL.
RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})
# Zwróć nagłówek 403 Forbidden i pokaż zawartość strony głównej
RewriteRule .* index.php [F]
#
## Koniec - Zasady zapisu dla blokowania niektórych typowych luk.
## Początek - Niestandardowe przekierowania
#
# Jeśli potrzebujesz przekierować niektóre strony lub ustawić kanoniczne przekierowanie z non-www na
# www (lub odwrotnie), umieść ten kod tutaj. Upewnij się, że te
# przekierowania używają poprawnej składni RewriteRule i flagi [R=301,L].
#
## Koniec - Niestandardowe przekierowania
##
# Odkomentuj następną linię, jeśli adres URL serwera
# nie jest bezpośrednio związany ze ścieżkami fizycznych plików.
# Zaktualizuj katalog Joomla! (tylko / dla katalogu głównego).
##
# RewriteBase /
## Początek - Sekcja SEF rdzenia Joomla!.
#
# Poprawka PHP FastCGI dla autoryzacji HTTP, wymagana dla aplikacji API
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
# -- Adresy URL SEF dla aplikacji API
# Jeśli żądana ścieżka zaczyna się od /api, plik nie jest /api/index.php
# i żądanie nie zostało już wewnętrznie przekierowane do
# skryptu api/index.php
RewriteCond %{REQUEST_URI} ^/api/
RewriteCond %{REQUEST_URI} !^/api/index\.php
# a żądana ścieżka i plik nie odpowiadają bezpośrednio plikowi fizycznemu
RewriteCond %{REQUEST_FILENAME} !-f
# a żądana ścieżka i plik nie odpowiadają bezpośrednio folderowi fizycznemu
RewriteCond %{REQUEST_FILENAME} !-d
# wewnętrznie przekieruj żądanie do skryptu /api/index.php
RewriteRule .* api/index.php [L]
# -- Adresy URL SEF dla publicznej aplikacji frontendowej
# Jeśli żądana ścieżka i plik to nie /index.php i żądanie
# nie zostało już wewnętrznie przekierowane do skryptu index.php
RewriteCond %{REQUEST_URI} !^/index\.php
# a żądana ścieżka i plik nie odpowiadają bezpośrednio plikowi fizycznemu
RewriteCond %{REQUEST_FILENAME} !-f
# a żądana ścieżka i plik nie odpowiadają bezpośrednio folderowi fizycznemu
RewriteCond %{REQUEST_FILENAME} !-d
# wewnętrznie przekieruj żądanie do skryptu index.php
RewriteRule .* index.php [L]
#
## Koniec - Sekcja SEF rdzenia Joomla!.
</IfModule>
## Te dyrektywy są włączane tylko wtedy, gdy moduł Apache mod_rewrite jest wyłączony
<IfModule !mod_rewrite.c>
<IfModule mod_alias.c>
# Gdy moduł Apache mod_rewrite nie jest dostępny, instruujemy tymczasowe przekierowanie
# strony startowej do front controlera, aby strona internetowa
# i wygenerowane linki nadal mogły być używane.
RedirectMatch 302 ^/$ /index.php/
# Nie można użyć RedirectTemp zamiast tego
</IfModule>
</IfModule>
## GZIP
## Te dyrektywy są włączane tylko wtedy, gdy moduł Apache mod_headers jest włączony.
## Ten fragment sprawdzi, czy istnieje plik .gz i jeśli tak, strumieniuje go
## bezpośrednio lub fallbackuje do gzipowania dowolnego zasobu „w locie”
## Jeśli Twoja strona zaczyna wyglądać dziwnie po włączeniu tego pliku, i widzisz
## ERR_CONTENT_DECODING_FAILED w konsoli przeglądarki na karcie sieciowej,
## oznacza to, że serwer już kompresuje pliki CSS i JS i nie potrzebujesz tego
## fragmentu włączonego w swoim .htaccess
<IfModule mod_headers.c>
# Serwuj skompresowane GZIP pliki CSS, jeśli istnieją
# i klient akceptuje gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.css" "$1\.css\.gz" [QSA]
# Serwuj skompresowane GZIP pliki JS, jeśli istnieją
# i klient akceptuje gzip.
RewriteCond "%{HTTP:Accept-encoding}" "gzip"
RewriteCond "%{REQUEST_FILENAME}\.gz" -s
RewriteRule "^(.*)\.js" "$1\.js\.gz" [QSA]
# Serwuj poprawne typy zawartości i zapobiegaj podwójnemu kompresowaniu gzip przez mod_deflate.
RewriteRule "\.css\.gz$" "-" [T=text/css,E=no-gzip:1]
RewriteRule "\.js\.gz$" "-" [T=text/javascript,E=no-gzip:1]
<FilesMatch "(\.js\.gz|\.css\.gz)$">
# Serwuj poprawny typ kodowania.
Header set Content-Encoding gzip
# Wymuś na proxy oddzielne buforowanie skompresowanych i
# nieskompresowanych plików CSS/JS.
Header append Vary Accept-Encoding
</FilesMatch>
</IfModule>
Drupal 7
Plik .htaccess w Drupal 7 zawiera podstawowe ustawienia bezpieczeństwa i optymalizacji. Typowa zawartość:
# Użyj poniższego kodu, aby zapobiec sygnaturom serwera i przeglądaniu katalogów
ServerSignature Off
Options -Indexes
# Chroń wrażliwe pliki
<FilesMatch "\.(htaccess|htpasswd)">
Order Allow,Deny
Deny from all
</FilesMatch>
# Chroń pliki przed bezpośrednim dostępem
<FilesMatch "\.(txt|md|yml|json|xml)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Ustaw domyślną strefę czasową dla PHP
SetEnv TZ Europe/Amsterdam
# Włącz kompresję dla lepszej wydajności
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript
# Ustawienia buforowania dla lepszej wydajności
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=3600"
</IfModule>
Drupal 8
Dla Drupal 8, .htaccess zawiera już dodatkowe usprawnienia i obsługuje nowe funkcje. Na przykład, istnieje obsługa HTTP/2, ulepszone bezpieczeństwo, personalizacja do obsługi czystych adresów URL i buforowania.
# Zapobiegaj przeglądaniu katalogów i sygnaturom serwera
ServerSignature Off
Options -Indexes
# Chroń wrażliwe pliki
<FilesMatch "\.(htaccess|htpasswd|ini|log|conf)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Obsługa czystych adresów URL
RewriteEngine on
RewriteBase /
# Wsparcie dla HTTP/2
<IfModule http2_module>
Protocols h2 http/1.1
</IfModule>
# Kontrola buforowania dla zasobów
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=86400, s-maxage=86400, must-revalidate"
</IfModule>
# Włącz kompresję
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript application/javascript text/javascript
# Przekieruj ukośniki na końcu adresów URL dla czystych adresów URL
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /+$
RewriteRule ^(.*)/$ /$1 [R=301,L]
Drupal 9
Dla Drupal 9 plik .htaccess zawiera dalsze ulepszenia do pracy z nowszymi technologiami internetowymi, takimi jak obsługa HTTP/2 i bardziej rygorystyczne środki bezpieczeństwa.
# Zapobiegaj przeglądaniu katalogów i sygnaturom serwera
ServerSignature Off
Options -Indexes
# Chroń wrażliwe pliki
<FilesMatch "\.(htaccess|htpasswd|ini|log|conf)$">
Order Allow,Deny
Deny from all
</FilesMatch>
# Włącz czyste adresy URL (jest to niezbędne do prawidłowego działania Drupal)
RewriteEngine on
RewriteBase /
# Obsługa HTTP/2 i nowoczesne buforowanie
<IfModule mod_http2.c>
Protocols h2 http/1.1
</IfModule>
<IfModule mod_headers.c>
Header set Cache-Control "public, max-age=86400, s-maxage=86400, must-revalidate"
</IfModule>
# Włącz kompresję Gzip
AddOutputFilterByType DEFLATE text/html text/plain text/xml text/css application/x-javascript text/javascript application/javascript
# Obsługa czystych adresów URL dla Drupal
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} /+$
RewriteRule ^(.*)/$ /$1 [R=301,L]
OpenCart
Options +FollowSymlinks
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]
Magento (2.x)
Magento posiada złożony plik .htaccess, który zawiera zasady dotyczące kompresji, buforowania i bezpieczeństwa. Przykład dla Magento 2:
<IfModule mod_php5.c>
php_flag memory_limit 756M
php_flag max_execution_time 18000
</IfModule>
<IfModule mod_rewrite.c>
Options +FollowSymLinks
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/pub/
RewriteRule ^(.*)$ pub/$1 [L]
</IfModule>
PrestaShop (1.7.x)
PrestaShop automatycznie generuje plik .htaccess podczas instalacji lub przy zmianie ustawień przyjaznych dla SEO adresów URL.
# ~~start~~ Nie usuwaj tego komentarza, PrestaShop automatycznie zachowa kod poza tym komentarzem podczas ponownego generowania pliku .htaccess
# Plik .htaccess automatycznie wygenerowany przez rozwiązanie e-commerce PrestaShop
# http://www.prestashop.com - http://www.prestashop.com/forums
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>
RewriteEngine on
# Domeny: www.example.com
RewriteRule . - [E=REWRITEBASE:/]
# API
RewriteRule ^api$ api/ [L]
RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Obrazy
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader dla IE i fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/opentype "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-otf "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
Header unset Etag
</IfModule>
FileETag none
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype image/svg+xml
</IfModule>
</IfModule>
# Jeśli moduł rewrite nie jest włączony
ErrorDocument 404 /index.php?controller=404
# ~~start~~ Nie usuwaj tego komentarza, PrestaShop automatycznie zachowa kod poza tym komentarzem podczas ponownego generowania pliku .htaccess
# Plik .htaccess automatycznie wygenerowany przez rozwiązanie e-commerce PrestaShop
# http://www.prestashop.com - http://www.prestashop.com/forums
<IfModule mod_rewrite.c>
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>
RewriteEngine on
# Domeny: www.example.com
RewriteRule . - [E=REWRITEBASE:/]
# API
RewriteRule ^api$ api/ [L]
RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]
# Obrazy
RewriteRule ^([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$1$2$3.jpg [L]
RewriteRule ^([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$1$2$3$4.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$1$2$3$4$5.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$1$2$3$4$5$6.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$1$2$3$4$5$6$7.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$1$2$3$4$5$6$7$8.jpg [L]
RewriteRule ^([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])([0-9])(\-[_a-zA-Z0-9-]*)?(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/p/$1/$2/$3/$4/$5/$6/$7/$1$2$3$4$5$6$7$8$9.jpg [L]
RewriteRule ^c/([0-9]+)(\-[\.*_a-zA-Z0-9-]*)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2$3.jpg [L]
RewriteRule ^c/([a-zA-Z_-]+)(-[0-9]+)?/.+\.jpg$ %{ENV:REWRITEBASE}img/c/$1$2.jpg [L]
# AlphaImageLoader dla IE i fancybox
RewriteRule ^images_ie/?([^/]+)\.(jpe?g|png|gif)$ js/jquery/plugins/fancybox/images/$1.$2 [L]
# Dispatcher
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ %{ENV:REWRITEBASE}index.php [NC,L]
</IfModule>
<IfModule mod_headers.c>
<FilesMatch "\.(ttf|ttc|otf|eot|woff|woff2|svg)$">
Header set Access-Control-Allow-Origin "*"
</FilesMatch>
</IfModule>
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif "access plus 1 month"
ExpiresByType image/jpeg "access plus 1 month"
ExpiresByType image/png "access plus 1 month"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType image/x-icon "access plus 1 year"
ExpiresByType image/svg+xml "access plus 1 year"
ExpiresByType image/vnd.microsoft.icon "access plus 1 year"
ExpiresByType application/font-woff "access plus 1 year"
ExpiresByType application/x-font-woff "access plus 1 year"
ExpiresByType font/woff2 "access plus 1 year"
ExpiresByType application/vnd.ms-fontobject "access plus 1 year"
ExpiresByType font/opentype "access plus 1 year"
ExpiresByType font/ttf "access plus 1 year"
ExpiresByType font/otf "access plus 1 year"
ExpiresByType application/x-font-ttf "access plus 1 year"
ExpiresByType application/x-font-otf "access plus 1 year"
</IfModule>
<IfModule mod_headers.c>
Header unset Etag
</IfModule>
FileETag none
<IfModule mod_deflate.c>
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/x-javascript font/ttf application/x-font-ttf font/otf application/x-font-otf font/opentype image/svg+xml
</IfModule>
</IfModule>
# Jeśli moduł rewrite nie jest włączony
ErrorDocument 404 /index.php?controller=404
Shopify, Squarespace, Adobe Commerce i inne platformy chmurowe
Shopify, Squarespace i Adobe Commerce (wcześniej Magento Commerce) to platformy oparte na chmurze, które nie zapewniają bezpośredniego dostępu do pliku .htaccess. Cała konfiguracja odbywa się za pośrednictwem panelu administracyjnego.
Inne przykłady takich usług obejmują Wix, Weebly, BigCommerce i Jimdo. Platformy te pozwalają użytkownikom konfigurować i optymalizować swoje strony internetowe za pomocą interfejsów wizualnych, bez konieczności ręcznego edytowania plików konfiguracyjnych serwera.
Potrzebujesz pomocy w przywróceniu pliku .htaccess?
Jeśli nie jesteś pewien, z jakiego systemu CMS korzysta Twoja strona internetowa lub jak bezpiecznie przywrócić uszkodzony plik .htaccess, jesteśmy tu, aby pomóc.
Nasze wsparcie techniczne jest całkowicie bezpłatne dla wszystkich klientów Kodu.cloud i dostępne 24/7/365. Po prostu utwórz zgłoszenie do wsparcia, a nasz zespół pomoże Ci w ciągu kilku minut.
Więcej szczegółów na temat tego, co jest zawarte, znajdziesz w naszej polityce wsparcia.