.htaccess Идеальный конфиг?

Советы и рекомендации, полезные инструкции, обмен опытом
factotum
Сообщения: 24
Зарегистрирован:
17 апр 2012, 12:19

.htaccess Идеальный конфиг?

factotum » 19 апр 2012, 15:52

собственно предлагаю обсудить у кого что в htaccess и попробовать поискать идеальный конфиг.

Пока черновик выглядит следующим образом:
# ----------------------------------------------------------------------
# Proper MIME type for all files
# ----------------------------------------------------------------------
# JavaScript
#	 Normalize to standard type (it's sniffed in IE anyways)
#	 tools.ietf.org/html/rfc4329#section-7.2
<IfModule mod_mime.c>
	AddType text/css .css
	AddType application/x-javascript .js
	AddType text/x-component .htc
	AddType text/html .html .htm
	AddType text/richtext .rtf .rtx
	AddType image/svg+xml .svg .svgz
	AddType text/plain .txt
	AddType text/xsd .xsd
	AddType text/xsl .xsl
	AddType text/xml .xml
	AddType video/asf .asf .asx .wax .wmv .wmx
	AddType video/avi .avi
	AddType image/bmp .bmp
	AddType application/java .class
	AddType video/divx .divx
	AddType application/msword .doc .docx
	AddType application/vnd.ms-fontobject .eot
	AddType application/x-msdownload .exe
	AddType image/gif .gif
	AddType application/x-gzip .gz .gzip
	AddType image/x-icon .ico
	AddType image/jpeg .jpg .jpeg .jpe
	AddType application/vnd.ms-access .mdb
	AddType audio/midi .mid .midi
	AddType video/quicktime .mov .qt
	AddType audio/mpeg .mp3 .m4a
	AddType video/mp4 .mp4 .m4v
	AddType video/mpeg .mpeg .mpg .mpe
	AddType application/vnd.ms-project .mpp
	AddType application/vnd.oasis.opendocument.database			.odb
	AddType application/vnd.oasis.opendocument.chart			.odc
	AddType application/vnd.oasis.opendocument.formula			.odf
	AddType application/vnd.oasis.opendocument.graphics			.odg
	AddType application/vnd.oasis.opendocument.presentation		.odp
	AddType application/vnd.oasis.opendocument.spreadsheet		.ods
	AddType application/vnd.oasis.opendocument.text				.odt
	AddType audio/ogg											.ogg .oga
	AddType application/pdf										.pdf
	AddType image/png											.png
	AddType application/vnd.ms-powerpoint						.pot .pps .ppt .pptx
	AddType audio/x-realaudio									.ra .ram
	AddType application/x-shockwave-flash						.swf
	AddType application/x-tar									.tar
	AddType image/tiff											.tif .tiff
	AddType application/x-font-ttf								.ttf .ttc
	AddType audio/wav											.wav
	AddType audio/wma											.wma
	AddType application/vnd.ms-write							.wri
	AddType application/vnd.ms-excel							.xla .xls .xlsx .xlt .xlw
	AddType application/zip 									.zip
	# Webfonts
	AddType application/vnd.ms-fontobject						.eot
	AddType application/x-font-otf								.otf
	AddType application/x-font-ttf				 				.ttf .ttc
	AddType application/x-font-woff								.woff
	# Assorted types
	AddType image/x-icon										.ico
	AddType image/webp											.webp
	AddType text/cache-manifest								 	.appcache manifest
	AddType text/x-component									.htc
	AddType application/x-chrome-extension						.crx
	AddType application/x-opera-extension			 			.oex
	AddType application/x-xpinstall								.xpi
	AddType application/octet-stream							.safariextz
	AddType application/x-web-app-manifest+json 				.webapp
	AddType text/x-vcard										.vcf
</IfModule>

# ----------------------------------------------------------------------
# Better website experience for IE users
# ----------------------------------------------------------------------

# Force the latest IE version, in various cases when it may fall back to IE7 mode
#	github.com/rails/rails/commit/123eb25#commitcomment-118920
# Use ChromeFrame if it's installed for a better experience for the poor IE folk

<IfModule mod_headers.c>
	Header set X-UA-Compatible "IE=Edge,chrome=1"
	# mod_headers can't match by content-type, but we don't want to send this header on *everything*...
	<FilesMatch "\.(js|css|gif|png|jpe?g|pdf|xml|oga|ogg|m4a|ogv|mp4|m4v|webm|svg|svgz|eot|ttf|otf|woff|ico|webp|appcache|
manifest|htc|crx|oex|xpi|safariextz|vcf)$" >
		Header unset X-UA-Compatible
	</FilesMatch>
</IfModule>

# ----------------------------------------------------------------------
# Cross-domain AJAX requests
# ----------------------------------------------------------------------

# Serve cross-domain Ajax requests, disabled by default.
# enable-cors.org
# code.google.com/p/html5security/wiki/CrossOriginRequestSecurity

#	<IfModule mod_headers.c>
#		Header set Access-Control-Allow-Origin "*"
#	</IfModule>


# ----------------------------------------------------------------------
# CORS-enabled images (@crossorigin)
# ----------------------------------------------------------------------

# Send CORS headers if browsers request them; enabled by default for images.
# developer.mozilla.org/en/CORS_Enabled_Image
# blog.chromium.org/2011/07/using-cross-domain-images-in-webgl-and.html
# hacks.mozilla.org/2011/11/using-cors-to-load-webgl-textures-from-cross-domain-images/
# wiki.mozilla.org/Security/Reviews/crossoriginAttribute

<IfModule mod_setenvif.c>
	<IfModule mod_headers.c>
		# mod_headers, y u no match by Content-Type?!
		<FilesMatch "\.(gif|png|jpe?g|svg|svgz|ico|webp)$">
			SetEnvIf Origin ":" IS_CORS
			Header set Access-Control-Allow-Origin "*" env=IS_CORS
		</FilesMatch>
	</IfModule>
</IfModule>

# ----------------------------------------------------------------------
# Webfont access
# ----------------------------------------------------------------------

# Allow access from all domains for webfonts.
# Alternatively you could only whitelist your
# subdomains like "subdomain.example.com".

<IfModule mod_headers.c>
	<FilesMatch "\.(ttf|ttc|otf|eot|woff|font.css)$">
		Header set Access-Control-Allow-Origin "*"
	</FilesMatch>
</IfModule>

# ----------------------------------------------------------------------
# Expires h2eaders (for better cache control)
# ----------------------------------------------------------------------

# These are pretty far-future expires headers.
# They assume you control versioning with cachebusting query params like
#	<script src="application.js?20100608">
# Additionally, consider that outdated proxies may miscache
#	www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

# If you don't use filenames to version, lower the CSS	and JS to something like
#	"access plus 1 week" or so.

<IfModule mod_expires.c>

	ExpiresActive On

	# Perhaps better to whitelist expires rules? Perhaps.
	ExpiresDefault										"access plus 1 month"

	# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
	ExpiresByType text/cache-manifest			 		"access plus 0 seconds"

	# Your document html
	ExpiresByType text/html								"access plus 0 seconds"

	# Data
	ExpiresByType application/xml					 	"access plus 0 seconds"
	ExpiresByType application/json						"access plus 0 seconds"
	ExpiresByType text/xml								"access plus 0 seconds"
		
	# Feed
	ExpiresByType application/rss+xml					"access plus 1 hour"
	ExpiresByType application/atom+xml					"access plus 1 hour"

	# HTC files	(css3pie)
	ExpiresByType text/x-component						"access plus 1 month"

	# CSS and JavaScript
	ExpiresByType text/css								"access plus 1 month"
	ExpiresByType application/javascript				"access plus 1 month"
	
</IfModule>

# ----------------------------------------------------------------------
# Gzip compression
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>

	# Force deflate for mangled headers 
	# developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
	<IfModule mod_setenvif.c>
		<IfModule mod_headers.c>
			SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
			RequestHeader append Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
		</IfModule>
	</IfModule>

	# HTML, TXT, CSS, JavaScript, JSON, XML, HTC:
	<IfModule filter_module>
		FilterDeclare	 COMPRESS
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $text/html
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $text/css
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $text/plain
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $text/xml
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $text/x-component
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $application/javascript
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $application/json
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $application/xml
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $application/xhtml+xml
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $application/rss+xml
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $application/atom+xml
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $application/vnd.ms-fontobject
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $image/svg+xml
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $image/x-icon
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $application/x-font-ttf
		FilterProvider	COMPRESS	DEFLATE resp=Content-Type $font/opentype
		FilterChain		 COMPRESS
		FilterProtocol	COMPRESS	DEFLATE change=yes;byteranges=no
	</IfModule>

	<IfModule !mod_filter.c>
		# Legacy versions of Apache
		AddOutputFilterByType DEFLATE text/html text/plain text/css application/json
		AddOutputFilterByType DEFLATE application/javascript
		AddOutputFilterByType DEFLATE text/xml application/xml text/x-component
		AddOutputFilterByType DEFLATE application/xhtml+xml application/rss+xml application/atom+xml
		AddOutputFilterByType DEFLATE image/x-icon image/
svg+xml application/vnd.ms-fontobject application/x-font-ttf font/opentype
	</IfModule>

</IfModule>

<IfModule mod_headers.c>
	Header set Pragma "public"
	Header append Cache-Control "public, must-revalidate, proxy-revalidate"
	Header append Vary Accept-Encoding
	# FileETag None is not enough for every server.
	Header unset ETag
		
	# Unset Cookies
	<FilesMatch "\.(css|ico|png)$">
		RequestHeader unset Cookie
		Header unset Set-Cookie
	</FilesMatch>

</IfModule>

# Since we're sending far-future expires, we don't need ETags for
# static content.
#	 developer.yahoo.com/performance/rules.html#etags
FileETag None


# ----------------------------------------------------------------------
# Built-in filename-based cache busting
# ----------------------------------------------------------------------

# If you're not using the build script to manage your filename version revving,
# you might want to consider enabling this, which will route requests for
# /css/style.20110203.css to /css/style.css

# To understand why this is important and a better idea than all.css?v1231,
# read: github.com/h5bp/html5-boilerplate/wiki/Version-Control-with-Cachebusting

# Uncomment to enable.
# <IfModule mod_rewrite.c>
#	 RewriteCond %{REQUEST_FILENAME} !-f
#	 RewriteCond %{REQUEST_FILENAME} !-d
#	 RewriteRule ^(.+)\.(\d+)\.(js|css|png|jpg|gif)$ $1.$3 [L]
#</IfModule>

# ----------------------------------------------------------------------
# Prevent SSL cert warnings
# ----------------------------------------------------------------------

# Rewrite secure requests properly to prevent SSL cert warnings, e.g. prevent
# https://www.example.com when your cert only allows https://secure.example.com
# Uncomment the following lines to use this feature.

# <IfModule mod_rewrite.c>
#	 RewriteCond %{SERVER_PORT} !^443
#	 RewriteRule ^ https://example-domain-please-change-me.com%{REQUEST_URI} [R=301,L]
# </IfModule>

# ----------------------------------------------------------------------
# Prevent 404 errors for non-existing redirected folders
# ----------------------------------------------------------------------

# without -MultiViews, Apache will give a 404 for a rewrite if a folder of the same name does not exist
#	 e.g. /blog/hello : webmasterworld.com/apache/3808792.htm

Options -MultiViews

# ----------------------------------------------------------------------
# Custom 404 page
# ----------------------------------------------------------------------

# You can add custom pages to handle 500 or 403 pretty easily, if you like.
# ErrorDocument 404 /404.html

# ----------------------------------------------------------------------
# UTF-8 encoding
# ----------------------------------------------------------------------

# Use UTF-8 encoding for anything served text/plain or text/html
AddDefaultCharset utf-8

# Force UTF-8 for a number of file formats
AddCharset utf-8 .css .js .xml .json .rss .atom


# ----------------------------------------------------------------------
# A little more security
# ----------------------------------------------------------------------


# Do we want to advertise the exact version number of Apache we're running?
# Probably not.
## This can only be enabled if used in httpd.conf - It will not work in .htaccess
# ServerTokens Prod


# "-Indexes" will have Apache block users from browsing folders without a default document
# Usually you should leave this activated, because you shouldn't allow everybody to surf through
# every folder on your server (which includes rather private places like CMS system folders).
<IfModule mod_autoindex.c>
	Options -Indexes
</IfModule>


# Block access to "hidden" directories whose names begin with a period. This
# includes directories used by version control systems such as Subversion or Git.
<IfModule mod_rewrite.c>
	RewriteCond %{SCRIPT_FILENAME} -d
	RewriteCond %{SCRIPT_FILENAME} -f
	RewriteRule "(^|/)\." - [F]
</IfModule>


# Block access to backup and source files
# This files may be left by some text/html editors and
# pose a great security danger, when someone can access them
<FilesMatch "(\.(bak|config|sql|fla|psd|ini|log|sh|inc|swp|dist)|~)$">
	Order allow,deny
	Deny from all
	Satisfy All
</FilesMatch>


# If your server is not already configured as such, the following directive
# should be uncommented in order to set PHP's register_globals option to OFF.
# This closes a major security hole that is abused by most XSS (cross-site
# scripting) attacks. For more information: http://php.net/register_globals
#
# IF REGISTER_GLOBALS DIRECTIVE CAUSES 500 INTERNAL SERVER ERRORS :
#
# Your server does not allow PHP directives to be set via .htaccess. In that
# case you must make this change in your php.ini file instead. If you are
# using a commercial web host, contact the administrators for assistance in
# doing this. Not all servers allow local php.ini files, and they should
# include all PHP configurations (not just this one), or you will effectively
# reset everything to PHP defaults. Consult www.php.net for more detailed
# information about setting PHP directives.

# php_flag register_globals Off

# Rename session cookie to something else, than PHPSESSID
# php_value session.name sid

# Do not show you are using PHP
# Note: Move this line to php.ini since it won't work in .htaccess
# php_flag expose_php Off

# Level of log detail - log all errors
# php_value error_reporting -1

# Write errors to log file
# php_flag log_errors On

# Do not display errors in browser (production - Off, development - On)
# php_flag display_errors Off

# Do not display startup errors (production - Off, development - On)
# php_flag display_startup_errors Off

# Format errors in plain text
# Note: Leave this setting 'On' for xdebug's var_dump() output
# php_flag html_errors Off

# Show multiple occurrence of error
# php_flag ignore_repeated_errors Off

# Show same errors from different sources
# php_flag ignore_repeated_source Off

# Size limit for error messages
# php_value log_errors_max_len 1024

# Don't precede error with string (doesn't accept empty string, use whitespace if you need)
# php_value error_prepend_string " "

# Don't prepend to error (doesn't accept empty string, use whitespace if you need)
# php_value error_append_string " "

# Increase cookie security
<IfModule php5_module>
	php_value session.cookie_httponly true
</IfModule>
Строился с учетом требований google page speed и yahoo performance rules
Последний раз редактировалось factotum 19 апр 2012, 16:04, всего редактировалось 1 раз.
Аватара пользователя
Максим
Сообщения: 5369
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Re: .htaccess Идеальный конфиг?

Максим » 19 апр 2012, 15:57

У вас тут 3-4 места с длинными строками. Разбейте значения пополам и продублируйте условия с каждой половиной, а то форум вон как разнесло.
factotum
Сообщения: 24
Зарегистрирован:
17 апр 2012, 12:19

Re: .htaccess Идеальный конфиг?

factotum » 19 апр 2012, 16:06

ага. присмотритесь к этому
Аватара пользователя
Максим
Сообщения: 5369
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Re: .htaccess Идеальный конфиг?

Максим » 19 апр 2012, 16:14

Спасибо, сейчас попробую поставить его вместо нашего форума :-)
nerevar1n
Сообщения: 16
Зарегистрирован:
02 фев 2012, 21:25
Контактная информация:

nerevar1n » 19 апр 2012, 19:24

Советую обратить внимание на http://html5boilerplate.com/ и непосредственно .htaccess
factotum
Сообщения: 24
Зарегистрирован:
17 апр 2012, 12:19

factotum » 19 апр 2012, 19:43

nerevar1n писал(а):Советую обратить внимание на http://html5boilerplate.com/ и непосредственно .htaccess
ага. оно и есть, с небольшим модом

Добавлено спустя 1 минуту 3 секунды:
Максим, верните кнопку "цитата" по умолчанию. Идея с появлением кнопки только при наличии выделения несколько сумбурна.
Аватара пользователя
Максим
Сообщения: 5369
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 19 апр 2012, 21:43

factotum писал(а):Максим, верните кнопку "цитата" по умолчанию. Идея с появлением кнопки только при наличии выделения несколько сумбурна.
Сейчас поищу в настройках, может это настраивается. Это не я, это новый форум такой :-)
factotum
Сообщения: 24
Зарегистрирован:
17 апр 2012, 12:19

factotum » 20 апр 2012, 08:41

Максим,
http://phpbbex.com/forum/download/file. ... ptions.png
"Разрешить полное цитирование - да"
Аватара пользователя
Максим
Сообщения: 5369
Зарегистрирован:
11 дек 2010, 20:29
Контактная информация:

Максим » 20 апр 2012, 10:36

factotum писал(а):Максим,
http://phpbbex.com/forum/download/file. ... ptions.png
"Разрешить полное цитирование - да"
Встаю на колени и со слезами на глазах прошу вас, покажите где это настраивается. Я вчера пол дня искал и то что вы показали - не нашел.

Апдейт: фух.... ну и система, надо было сначала модуль установить и только сейчас я нашел где-это. Чисто случайно наткнулся. Какого чёрта неустановленный модуль работал не понятно, видимо такой кривой этот phpbbex. Спасибо за всё, в общем то еще вчера всё обновил.
factotum
Сообщения: 24
Зарегистрирован:
17 апр 2012, 12:19

factotum » 20 апр 2012, 22:16

Максим, ага, при переходе с обычного phpbb на phpbbex много вопросов. если ставить с нуля - то все красиво ))
Ответить