addedInput schema / additionalProperties
Added value: +false
addedInput schema / properties / allowIps
Added value: +{
+ "description": "IPv4/IPv6 addresses or CIDR ranges to allow; when set alone, everyone else is denied.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
addedInput schema / properties / brotli
Added value: +{
+ "default": false,
+ "description": "Emit a mod_brotli compression block (typically 15-25% smaller than gzip).",
+ "type": "boolean"
+}
addedInput schema / properties / cacheHeaders
Added value: +{
+ "additionalProperties": false,
+ "description": "mod_expires + mod_headers cache lifetimes. Omit or use 0 to skip a tier.",
+ "properties": {
+ "htmlMinutes": {
+ "description": "Cache lifetime in minutes for text/html. Over 10080 (1 week) warns.",
+ "minimum": 1,
+ "type": "integer"
+ },
+ "staticDays": {
+ "description": "Cache lifetime in days for static assets (images/CSS/JS/fonts). Over 365 warns.",
+ "minimum": 1,
+ "type": "integer"
+ }
+ },
+ "type": "object"
+}
addedInput schema / properties / customRules
Added value: +{
+ "description": "Free-form Apache directives appended verbatim at the end of the file.",
+ "type": "string"
+}
addedInput schema / properties / denyIps
Added value: +{
+ "description": "IPv4/IPv6 addresses or CIDR ranges to block (Deny from). Invalid entries still emit but raise a warning.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+}
addedInput schema / properties / directoryListing
Added value: +{
+ "default": "leave-alone",
+ "description": "Autoindex: disabled emits Options -Indexes, enabled emits Options +Indexes, leave-alone emits nothing.",
+ "enum": [
+ "enabled",
+ "disabled",
+ "leave-alone"
+ ],
+ "type": "string"
+}
addedInput schema / properties / errorPages
Added value: +{
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Map of HTTP status code (400-599, as string key) to ErrorDocument path, e.g. 404 to /404.html.",
+ "type": "object"
+}
addedInput schema / properties / forceHttps / default
Added value: +false
addedInput schema / properties / forceHttps / description
Added value: +"Emit a mod_rewrite block that 301-redirects every HTTP request to HTTPS."
addedInput schema / properties / gzip / default
Added value: +false
addedInput schema / properties / gzip / description
Added value: +"Emit a mod_deflate GZIP AddOutputFilterByType block for text/JS/CSS/JSON."
addedInput schema / properties / hotlinkProtection
Added value: +{
+ "additionalProperties": false,
+ "description": "Referer-based image hotlink protection via mod_rewrite.",
+ "properties": {
+ "allowedDomains": {
+ "description": "Domains whose Referer is permitted; empty list warns (would block all cross-origin images).",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "enabled": {
+ "default": false,
+ "description": "Turn on hotlink protection.",
+ "type": "boolean"
+ },
+ "replacement": {
+ "description": "Optional replacement image URL for blocked requests; blank returns 403 (Forbidden).",
+ "type": "string"
+ }
+ },
+ "required": [
+ "enabled"
+ ],
+ "type": "object"
+}
addedInput schema / properties / operation
Added value: +{
+ "default": "generate",
+ "description": "\"generate\" builds .htaccess text from the options below; \"presets\" ignores all options and returns the curated preset list.",
+ "enum": [
+ "generate",
+ "presets"
+ ],
+ "type": "string"
+}
addedInput schema / properties / redirects
Added value: +{
+ "description": "mod_alias path-prefix redirects. Empty from/to, self-redirects, and homepage catches raise warnings.",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "from": {
+ "description": "Source path prefix, e.g. /old.",
+ "type": "string"
+ },
+ "to": {
+ "description": "Destination URL or path, e.g. /new.",
+ "type": "string"
+ },
+ "type": {
+ "default": "301",
+ "description": "HTTP redirect status code; unknown values fall back to 301 with a warning.",
+ "enum": [
+ "301",
+ "302",
+ "303",
+ "307",
+ "308"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "from",
+ "to"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / rewrites
Added value: +{
+ "description": "Custom mod_rewrite rules. Pattern is regex-compiled for a warning check (Apache uses PCRE).",
+ "items": {
+ "additionalProperties": false,
+ "properties": {
+ "flags": {
+ "description": "PCRE flags without brackets, e.g. R=301 and L.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pattern": {
+ "description": "RewriteRule match pattern, e.g. ^old/(.*)$.",
+ "type": "string"
+ },
+ "target": {
+ "description": "RewriteRule substitution target, e.g. /new/$1.",
+ "type": "string"
+ }
+ },
+ "required": [
+ "pattern",
+ "target"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+}
addedInput schema / properties / wwwMode / default
Added value: +"leave-alone"
addedInput schema / properties / wwwMode / description
Added value: +"Canonical host: force the www subdomain, force the bare apex, or emit no host-canonicalisation rule."
addedInput schema / properties / wwwMode / enum
Added value: +[
+ "force-www",
+ "force-non-www",
+ "leave-alone"
+]
changedInput schema / required
Previous value: -[
- "forceHttps",
- "wwwMode",
- "gzip"
-]New value: +[
+ "operation"
+]
changedOutput schema / (root)
Previous value: -nullNew value: +{
+ "properties": {
+ "operation": {
+ "description": "The operation performed (generate or presets).",
+ "type": "string"
+ },
+ "result": {
+ "description": "For operation=generate: the generated file and metadata. For operation=presets: a presets array.",
+ "properties": {
+ "htaccess": {
+ "description": "The complete assembled .htaccess file text (generate only).",
+ "type": "string"
+ },
+ "presets": {
+ "description": "Curated presets (presets only).",
+ "items": {
+ "properties": {
+ "description": {
+ "description": "What the preset configures.",
+ "type": "string"
+ },
+ "id": {
+ "description": "Preset id, e.g. wordpress-security.",
+ "type": "string"
+ },
+ "input": {
+ "description": "The generator input object the preset applies.",
+ "type": "object"
+ },
+ "name": {
+ "description": "Human-readable preset name.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "sections": {
+ "description": "Per-feature breakdown of the emitted blocks (generate only).",
+ "items": {
+ "properties": {
+ "content": {
+ "description": "The raw directive text for that section.",
+ "type": "string"
+ },
+ "description": {
+ "description": "What the section does.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Section id, e.g. force-https, gzip.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "warnings": {
+ "description": "Human-readable validation/safety warnings (invalid IPs, risky redirects, aggressive cache, etc.).",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "success": {
+ "description": "Whether the request succeeded.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+}