ProcessWire - Troubleshooting: Unterschied zwischen den Versionen
Aus Wikizone
| Zeile 18: | Zeile 18: | ||
# ----------------------------------------------------------------------------------------------- | # ----------------------------------------------------------------------------------------------- | ||
RewriteRule ^(.*)$ /index.php?it=$1 [L,QSA] | RewriteRule ^(.*)$ /index.php?it=$1 [L,QSA] | ||
| + | </pre> | ||
| + | |||
| + | == Datenbank Fehler auf Strato == | ||
| + | Access Denied auf Strato obwohl die Credentials stimmen. | ||
| + | <pre> htaccess ändern wie bei 1und1 </pre> | ||
| + | |||
| + | <pre> | ||
| + | ################################################################################################# | ||
| + | # START PROCESSWIRE HTACCESS DIRECTIVES | ||
| + | # @htaccessVersion 301 | ||
| + | # @indexVersion 300 | ||
| + | ################################################################################################# | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 1. Don't show directory indexes, but do follow symbolic links | ||
| + | # 500 NOTE: Some cloud hosting companies don't allow +FollowSymLinks. | ||
| + | # Uncomment +SymLinksifOwnerMatch and comment +FollowSymLinks if you have 500 errors. | ||
| + | # If that doesn't resolve the error, then set it back to +FollowSymLinks. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | Options -Indexes | ||
| + | Options +FollowSymLinks | ||
| + | # Options +SymLinksifOwnerMatch | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 2. Let ProcessWire handle 404s | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | ErrorDocument 404 /index.php | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 3. Handle request for missing favicon.ico/robots.txt files (no ending quote for Apache 1.3) | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | <Files favicon.ico> | ||
| + | ErrorDocument 404 "The requested file favicon.ico was not found. | ||
| + | </Files> | ||
| + | |||
| + | <Files robots.txt> | ||
| + | ErrorDocument 404 "The requested file robots.txt was not found. | ||
| + | </Files> | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 4. Protect from XSS with Apache headers | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | <IfModule mod_headers.c> | ||
| + | # prevent site from being loaded in an iframe on another site | ||
| + | # you will need to remove this one if you want to allow external iframes | ||
| + | Header always append X-Frame-Options SAMEORIGIN | ||
| + | |||
| + | # to prevent cross site scripting (IE8+ proprietary) | ||
| + | Header set X-XSS-Protection "1; mode=block" | ||
| + | |||
| + | # prevent mime-based attacks via content sniffing (IE+Chrome) | ||
| + | # Header set X-Content-Type-Options "nosniff" | ||
| + | </IfModule> | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 5. Protect ProcessWire system files | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | <FilesMatch "\.(inc|info|info\.json|module|sh|sql)$|^\..*$|composer\.(json|lock)$"> | ||
| + | <IfModule mod_authz_core.c> | ||
| + | Require all denied | ||
| + | </IfModule> | ||
| + | <IfModule !mod_authz_core.c> | ||
| + | Order allow,deny | ||
| + | </IfModule> | ||
| + | </FilesMatch> | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 6. Override a few PHP settings that can't be changed at runtime (not required) | ||
| + | # 500 NOTE: Try commenting out this entire section below if getting Apache 500 errors. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | <IfModule mod_php5.c> | ||
| + | php_flag magic_quotes_gpc off | ||
| + | php_flag magic_quotes_sybase off | ||
| + | php_flag register_globals off | ||
| + | </IfModule> | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 7. Set default directory index files | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | DirectoryIndex index.php index.html index.htm | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 8. ProcessWire requires mod_rewrite | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | <IfModule mod_rewrite.c> | ||
| + | |||
| + | RewriteEngine On | ||
| + | AddDefaultCharset UTF-8 | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 9. If you only want to allow HTTPS, uncomment the RewriteCond and RewriteRule lines below. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # RewriteCond %{HTTPS} off | ||
| + | # RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] | ||
| + | |||
| + | # If using an AWS load balancer, use these two lines below instead of those above: | ||
| + | # RewriteCond %{HTTP:X-Forwarded-Proto} =http | ||
| + | # RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 10. Set an environment variable so the installer can detect that mod_rewrite is active. | ||
| + | # Note that some web hosts don't support this. If you get a 500 error, you might try | ||
| + | # commenting out this SetEnv line below. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | <IfModule mod_env.c> | ||
| + | SetEnv HTTP_MOD_REWRITE On | ||
| + | </IfModule> | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 11. OPTIONAL: Set a rewrite base if rewrites aren't working properly on your server. | ||
| + | # And if your site directory starts with a "~" you will most likely have to use this. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | # RewriteBase / | ||
| + | # RewriteBase /pw/ | ||
| + | # RewriteBase /~user/ | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 12. Access Restrictions: Keep web users out of dirs that begin with a period, | ||
| + | # but let services like Lets Encrypt use the webroot authentication method. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | RewriteRule "(^|/)\.(?!well-known)" - [F] | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 13. OPTIONAL: Redirect users to the 'www.' version of the site (uncomment to enable). | ||
| + | # For example: http://processwire.com/ would be redirected to http://www.processwire.com/ | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | # RewriteCond %{HTTP_HOST} !^www\. [NC] | ||
| + | # RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301] | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 14. OPTIONAL: Send URLs with non-ASCII name-format characters to 404 page (optimization) | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | # RewriteCond %{REQUEST_URI} "[^-_.a-zA-Z0-9/~]" | ||
| + | # RewriteCond %{REQUEST_FILENAME} !-f | ||
| + | # RewriteCond %{REQUEST_FILENAME} !-d | ||
| + | # RewriteRule ^(.*)$ index.php?it=/http404/ [L,QSA] | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 15. Access Restrictions: Protect ProcessWire system files | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | # Allow screenshot files (for install.php only: this 1 line below may be removed after install) | ||
| + | RewriteCond %{REQUEST_URI} !(^|/)site-[^/]+/install/[^/]+\.(jpg|jpeg|png|gif)$ | ||
| + | # Block access to any htaccess files | ||
| + | RewriteCond %{REQUEST_URI} (^|/)\.htaccess$ [NC,OR] | ||
| + | # Block access to protected assets directories | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets/(cache|logs|backups|sessions|config|install|tmp)($|/.*$) [OR] | ||
| + | # Block acceess to the /site/install/ directory | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/install($|/.*$) [OR] | ||
| + | # Block dirs in /site/assets/ dirs that start with a hyphen | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets.*/-.+/.* [OR] | ||
| + | # Block access to /wire/config.php, /site/config.php, /site/config-dev.php, and /wire/index.config.php | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(wire|site|site-[^/]+)/(config|index\.config|config-dev)\.php$ [OR] | ||
| + | # Block access to any PHP-based files in /templates-admin/ | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(wire|site|site-[^/]+)/templates-admin($|/|/.*\.(php|html?|tpl|inc))$ [OR] | ||
| + | # Block access to any PHP or markup files in /site/templates/ | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/templates($|/|/.*\.(php|html?|tpl|inc))$ [OR] | ||
| + | # Block access to any PHP files in /site/assets/ | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets($|/|/.*\.php)$ [OR] | ||
| + | # Block access to any PHP files in core or core module directories | ||
| + | RewriteCond %{REQUEST_URI} (^|/)wire/(core|modules)/.*\.(php|inc|tpl|module|info\.json)$ [OR] | ||
| + | # Block access to any PHP files in /site/modules/ | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/modules/.*\.(php|inc|tpl|module|info\.json)$ [OR] | ||
| + | # Block access to any software identifying txt files | ||
| + | RewriteCond %{REQUEST_URI} (^|/)(COPYRIGHT|INSTALL|README|htaccess)\.(txt|md|textile)$ [OR] | ||
| + | # Block all http access to the default/uninstalled site-default directory | ||
| + | RewriteCond %{REQUEST_URI} (^|/)site-default/ | ||
| + | # If any conditions above match, issue a 403 forbidden | ||
| + | RewriteRule ^.*$ - [F,L] | ||
| + | |||
| + | # PW-PAGENAME | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 16a. Ensure that the URL follows the name-format specification required by PW | ||
| + | # See also directive 16b below, you should choose and use either 16a or 16b. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | RewriteCond %{REQUEST_URI} "^/~?[-_.a-zA-Z0-9/]*$" | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 16b. Alternative name-format specification for UTF8 page name support. | ||
| + | # If used, comment out section 16a above and uncomment the directive below. If you have updated | ||
| + | # your $config->pageNameWhitelist make the characters below consistent with that. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | # RewriteCond %{REQUEST_URI} "^/~?[-_./a-zA-Z0-9æåäßöüđжхцчшщюяàáâèéëêěìíïîõòóôøùúûůñçčćďĺľńňŕřšťýžабвгдеёзийклмнопрстуфыэęąśłżź]*$" | ||
| + | |||
| + | # END-PW-PAGENAME | ||
| + | |||
| + | # PROCACHE v2/a38e52c7571ac9b16e1f4985c2c29242 -------------------------------------------------- | ||
| + | RewriteCond %{REQUEST_METHOD} !=POST | ||
| + | RewriteCond %{QUERY_STRING} !.*=.* | ||
| + | RewriteRule ^.*$ - [E=pwpcstep:pour,E=pwpcname:index] | ||
| + | RewriteCond %{ENV:pwpcstep} "=pour" | ||
| + | RewriteCond %{HTTP_COOKIE} !^.*(wire_challenge|wires_challenge).*$ | ||
| + | RewriteRule ^.*$ - [E=pwpcstep:stir,E=pwpcpath:%{DOCUMENT_ROOT}/site/assets/ProCache-b90673484900986618ef6c6fe36cf0] | ||
| + | RewriteCond %{ENV:pwpcstep} "=stir" | ||
| + | RewriteCond %{ENV:pwpcpath}/$0/%{ENV:pwpcname}.html -f | ||
| + | RewriteRule ^.*$ - [E=pwpcstep:drink,E=pwpcfile:$0/%{ENV:pwpcname}.html] | ||
| + | RewriteCond %{ENV:pwpcstep} "=drink" | ||
| + | RewriteRule ^(.*) %{ENV:pwpcpath}/%{ENV:pwpcfile} [L] | ||
| + | <ifModule mod_headers.c> | ||
| + | Header set X-PWPC "ProCache" env=pwpcstep | ||
| + | Header set X-Powered-By "ProcessWire CMS, ProCache" env=pwpcstep | ||
| + | </ifModule> | ||
| + | RewriteCond %{REQUEST_URI} "^/~?[-_.a-zA-Z0-9/]*$" | ||
| + | # /PROCACHE ------------------------------------------------------------------------------------- | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 17. If the request is for a file or directory that physically exists on the server, | ||
| + | # then don't give control to ProcessWire, and instead load the file | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | RewriteCond %{REQUEST_FILENAME} !-f | ||
| + | RewriteCond %{REQUEST_FILENAME} !-d | ||
| + | RewriteCond %{REQUEST_FILENAME} !(favicon\.ico|robots\.txt) | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 18. OPTIONAL: Prevent ProcessWire from attempting to serve images or anything in /site/assets/. | ||
| + | # Both of these lines are optional, but can help to reduce server load. However, they | ||
| + | # are not compatible with the $config->pagefileSecure option (if enabled) and they | ||
| + | # may produce an Apache 404 rather than your regular 404. You may uncomment the two lines | ||
| + | # below if you don't need to use the $config->pagefileSecure option. After uncommenting, test | ||
| + | # a URL like domain.com/site/assets/files/test.jpg to make sure you are getting a 404 and not | ||
| + | # your homepage. If getting your homepage, then either: do not use this option, or comment out | ||
| + | # section #2 above that makes ProcessWire the 404 handler. | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | |||
| + | # RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|ico)$ [NC] | ||
| + | # RewriteCond %{REQUEST_FILENAME} !(^|/)site/assets/ | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 19. Pass control to ProcessWire if all the above directives allow us to this point. | ||
| + | # For regular VirtualHosts (most installs) | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | RewriteRule ^(.*)$ index.php?it=$1 [L,QSA] | ||
| + | |||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # 20. If using VirtualDocumentRoot (500 NOTE): comment out the one above and use this one instead | ||
| + | # ----------------------------------------------------------------------------------------------- | ||
| + | # RewriteRule ^(.*)$ /index.php?it=$1 [L,QSA] | ||
| + | |||
| + | </IfModule> | ||
| + | |||
| + | ################################################################################################# | ||
| + | # END PROCESSWIRE HTACCESS DIRECTIVES | ||
| + | ################################################################################################# | ||
| + | |||
| + | |||
</pre> | </pre> | ||
Version vom 23. August 2021, 18:07 Uhr
Processwire Probleme lösen:
Links
500 Error auf 1und1 Server
.htaccess File anpassen:
# ----------------------------------------------------------------------------------------------- # 19. Pass control to ProcessWire if all the above directives allow us to this point. # For regular VirtualHosts (most installs) # ----------------------------------------------------------------------------------------------- #RewriteRule ^(.*)$ index.php?it=$1 [L,QSA] # ----------------------------------------------------------------------------------------------- # 20. If using VirtualDocumentRoot (500 NOTE): comment out the one above and use this one instead # ----------------------------------------------------------------------------------------------- RewriteRule ^(.*)$ /index.php?it=$1 [L,QSA]
Datenbank Fehler auf Strato
Access Denied auf Strato obwohl die Credentials stimmen.
htaccess ändern wie bei 1und1
#################################################################################################
# START PROCESSWIRE HTACCESS DIRECTIVES
# @htaccessVersion 301
# @indexVersion 300
#################################################################################################
# -----------------------------------------------------------------------------------------------
# 1. Don't show directory indexes, but do follow symbolic links
# 500 NOTE: Some cloud hosting companies don't allow +FollowSymLinks.
# Uncomment +SymLinksifOwnerMatch and comment +FollowSymLinks if you have 500 errors.
# If that doesn't resolve the error, then set it back to +FollowSymLinks.
# -----------------------------------------------------------------------------------------------
Options -Indexes
Options +FollowSymLinks
# Options +SymLinksifOwnerMatch
# -----------------------------------------------------------------------------------------------
# 2. Let ProcessWire handle 404s
# -----------------------------------------------------------------------------------------------
ErrorDocument 404 /index.php
# -----------------------------------------------------------------------------------------------
# 3. Handle request for missing favicon.ico/robots.txt files (no ending quote for Apache 1.3)
# -----------------------------------------------------------------------------------------------
<Files favicon.ico>
ErrorDocument 404 "The requested file favicon.ico was not found.
</Files>
<Files robots.txt>
ErrorDocument 404 "The requested file robots.txt was not found.
</Files>
# -----------------------------------------------------------------------------------------------
# 4. Protect from XSS with Apache headers
# -----------------------------------------------------------------------------------------------
<IfModule mod_headers.c>
# prevent site from being loaded in an iframe on another site
# you will need to remove this one if you want to allow external iframes
Header always append X-Frame-Options SAMEORIGIN
# to prevent cross site scripting (IE8+ proprietary)
Header set X-XSS-Protection "1; mode=block"
# prevent mime-based attacks via content sniffing (IE+Chrome)
# Header set X-Content-Type-Options "nosniff"
</IfModule>
# -----------------------------------------------------------------------------------------------
# 5. Protect ProcessWire system files
# -----------------------------------------------------------------------------------------------
<FilesMatch "\.(inc|info|info\.json|module|sh|sql)$|^\..*$|composer\.(json|lock)$">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
</IfModule>
</FilesMatch>
# -----------------------------------------------------------------------------------------------
# 6. Override a few PHP settings that can't be changed at runtime (not required)
# 500 NOTE: Try commenting out this entire section below if getting Apache 500 errors.
# -----------------------------------------------------------------------------------------------
<IfModule mod_php5.c>
php_flag magic_quotes_gpc off
php_flag magic_quotes_sybase off
php_flag register_globals off
</IfModule>
# -----------------------------------------------------------------------------------------------
# 7. Set default directory index files
# -----------------------------------------------------------------------------------------------
DirectoryIndex index.php index.html index.htm
# -----------------------------------------------------------------------------------------------
# 8. ProcessWire requires mod_rewrite
# -----------------------------------------------------------------------------------------------
<IfModule mod_rewrite.c>
RewriteEngine On
AddDefaultCharset UTF-8
# -----------------------------------------------------------------------------------------------
# 9. If you only want to allow HTTPS, uncomment the RewriteCond and RewriteRule lines below.
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTPS} off
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# If using an AWS load balancer, use these two lines below instead of those above:
# RewriteCond %{HTTP:X-Forwarded-Proto} =http
# RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# -----------------------------------------------------------------------------------------------
# 10. Set an environment variable so the installer can detect that mod_rewrite is active.
# Note that some web hosts don't support this. If you get a 500 error, you might try
# commenting out this SetEnv line below.
# -----------------------------------------------------------------------------------------------
<IfModule mod_env.c>
SetEnv HTTP_MOD_REWRITE On
</IfModule>
# -----------------------------------------------------------------------------------------------
# 11. OPTIONAL: Set a rewrite base if rewrites aren't working properly on your server.
# And if your site directory starts with a "~" you will most likely have to use this.
# -----------------------------------------------------------------------------------------------
# RewriteBase /
# RewriteBase /pw/
# RewriteBase /~user/
# -----------------------------------------------------------------------------------------------
# 12. Access Restrictions: Keep web users out of dirs that begin with a period,
# but let services like Lets Encrypt use the webroot authentication method.
# -----------------------------------------------------------------------------------------------
RewriteRule "(^|/)\.(?!well-known)" - [F]
# -----------------------------------------------------------------------------------------------
# 13. OPTIONAL: Redirect users to the 'www.' version of the site (uncomment to enable).
# For example: http://processwire.com/ would be redirected to http://www.processwire.com/
# -----------------------------------------------------------------------------------------------
# RewriteCond %{HTTP_HOST} !^www\. [NC]
# RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
# -----------------------------------------------------------------------------------------------
# 14. OPTIONAL: Send URLs with non-ASCII name-format characters to 404 page (optimization)
# -----------------------------------------------------------------------------------------------
# RewriteCond %{REQUEST_URI} "[^-_.a-zA-Z0-9/~]"
# RewriteCond %{REQUEST_FILENAME} !-f
# RewriteCond %{REQUEST_FILENAME} !-d
# RewriteRule ^(.*)$ index.php?it=/http404/ [L,QSA]
# -----------------------------------------------------------------------------------------------
# 15. Access Restrictions: Protect ProcessWire system files
# -----------------------------------------------------------------------------------------------
# Allow screenshot files (for install.php only: this 1 line below may be removed after install)
RewriteCond %{REQUEST_URI} !(^|/)site-[^/]+/install/[^/]+\.(jpg|jpeg|png|gif)$
# Block access to any htaccess files
RewriteCond %{REQUEST_URI} (^|/)\.htaccess$ [NC,OR]
# Block access to protected assets directories
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets/(cache|logs|backups|sessions|config|install|tmp)($|/.*$) [OR]
# Block acceess to the /site/install/ directory
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/install($|/.*$) [OR]
# Block dirs in /site/assets/ dirs that start with a hyphen
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets.*/-.+/.* [OR]
# Block access to /wire/config.php, /site/config.php, /site/config-dev.php, and /wire/index.config.php
RewriteCond %{REQUEST_URI} (^|/)(wire|site|site-[^/]+)/(config|index\.config|config-dev)\.php$ [OR]
# Block access to any PHP-based files in /templates-admin/
RewriteCond %{REQUEST_URI} (^|/)(wire|site|site-[^/]+)/templates-admin($|/|/.*\.(php|html?|tpl|inc))$ [OR]
# Block access to any PHP or markup files in /site/templates/
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/templates($|/|/.*\.(php|html?|tpl|inc))$ [OR]
# Block access to any PHP files in /site/assets/
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/assets($|/|/.*\.php)$ [OR]
# Block access to any PHP files in core or core module directories
RewriteCond %{REQUEST_URI} (^|/)wire/(core|modules)/.*\.(php|inc|tpl|module|info\.json)$ [OR]
# Block access to any PHP files in /site/modules/
RewriteCond %{REQUEST_URI} (^|/)(site|site-[^/]+)/modules/.*\.(php|inc|tpl|module|info\.json)$ [OR]
# Block access to any software identifying txt files
RewriteCond %{REQUEST_URI} (^|/)(COPYRIGHT|INSTALL|README|htaccess)\.(txt|md|textile)$ [OR]
# Block all http access to the default/uninstalled site-default directory
RewriteCond %{REQUEST_URI} (^|/)site-default/
# If any conditions above match, issue a 403 forbidden
RewriteRule ^.*$ - [F,L]
# PW-PAGENAME
# -----------------------------------------------------------------------------------------------
# 16a. Ensure that the URL follows the name-format specification required by PW
# See also directive 16b below, you should choose and use either 16a or 16b.
# -----------------------------------------------------------------------------------------------
RewriteCond %{REQUEST_URI} "^/~?[-_.a-zA-Z0-9/]*$"
# -----------------------------------------------------------------------------------------------
# 16b. Alternative name-format specification for UTF8 page name support.
# If used, comment out section 16a above and uncomment the directive below. If you have updated
# your $config->pageNameWhitelist make the characters below consistent with that.
# -----------------------------------------------------------------------------------------------
# RewriteCond %{REQUEST_URI} "^/~?[-_./a-zA-Z0-9æåäßöüđжхцчшщюяàáâèéëêěìíïîõòóôøùúûůñçčćďĺľńňŕřšťýžабвгдеёзийклмнопрстуфыэęąśłżź]*$"
# END-PW-PAGENAME
# PROCACHE v2/a38e52c7571ac9b16e1f4985c2c29242 --------------------------------------------------
RewriteCond %{REQUEST_METHOD} !=POST
RewriteCond %{QUERY_STRING} !.*=.*
RewriteRule ^.*$ - [E=pwpcstep:pour,E=pwpcname:index]
RewriteCond %{ENV:pwpcstep} "=pour"
RewriteCond %{HTTP_COOKIE} !^.*(wire_challenge|wires_challenge).*$
RewriteRule ^.*$ - [E=pwpcstep:stir,E=pwpcpath:%{DOCUMENT_ROOT}/site/assets/ProCache-b90673484900986618ef6c6fe36cf0]
RewriteCond %{ENV:pwpcstep} "=stir"
RewriteCond %{ENV:pwpcpath}/$0/%{ENV:pwpcname}.html -f
RewriteRule ^.*$ - [E=pwpcstep:drink,E=pwpcfile:$0/%{ENV:pwpcname}.html]
RewriteCond %{ENV:pwpcstep} "=drink"
RewriteRule ^(.*) %{ENV:pwpcpath}/%{ENV:pwpcfile} [L]
<ifModule mod_headers.c>
Header set X-PWPC "ProCache" env=pwpcstep
Header set X-Powered-By "ProcessWire CMS, ProCache" env=pwpcstep
</ifModule>
RewriteCond %{REQUEST_URI} "^/~?[-_.a-zA-Z0-9/]*$"
# /PROCACHE -------------------------------------------------------------------------------------
# -----------------------------------------------------------------------------------------------
# 17. If the request is for a file or directory that physically exists on the server,
# then don't give control to ProcessWire, and instead load the file
# -----------------------------------------------------------------------------------------------
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !(favicon\.ico|robots\.txt)
# -----------------------------------------------------------------------------------------------
# 18. OPTIONAL: Prevent ProcessWire from attempting to serve images or anything in /site/assets/.
# Both of these lines are optional, but can help to reduce server load. However, they
# are not compatible with the $config->pagefileSecure option (if enabled) and they
# may produce an Apache 404 rather than your regular 404. You may uncomment the two lines
# below if you don't need to use the $config->pagefileSecure option. After uncommenting, test
# a URL like domain.com/site/assets/files/test.jpg to make sure you are getting a 404 and not
# your homepage. If getting your homepage, then either: do not use this option, or comment out
# section #2 above that makes ProcessWire the 404 handler.
# -----------------------------------------------------------------------------------------------
# RewriteCond %{REQUEST_FILENAME} !\.(jpg|jpeg|gif|png|ico)$ [NC]
# RewriteCond %{REQUEST_FILENAME} !(^|/)site/assets/
# -----------------------------------------------------------------------------------------------
# 19. Pass control to ProcessWire if all the above directives allow us to this point.
# For regular VirtualHosts (most installs)
# -----------------------------------------------------------------------------------------------
RewriteRule ^(.*)$ index.php?it=$1 [L,QSA]
# -----------------------------------------------------------------------------------------------
# 20. If using VirtualDocumentRoot (500 NOTE): comment out the one above and use this one instead
# -----------------------------------------------------------------------------------------------
# RewriteRule ^(.*)$ /index.php?it=$1 [L,QSA]
</IfModule>
#################################################################################################
# END PROCESSWIRE HTACCESS DIRECTIVES
#################################################################################################