.htaccess Redirect Generator
Generate Apache .htaccess redirect and access-control rules: arbitrary path-to-URL redirects (301/302), a whole-domain migration redirect, and an IP address allow-list or deny-list.
Input
Path redirects
Each line: "<from-path> <to-url-or-path> [301|302]" — status defaults to 301 (permanent).
Domain migration
Leave blank to skip domain migration.
IP access control
Output
More ways to use this tool
REST API
curl -X POST https://api.iotools.cloud/v1/tool/htaccess-redirect-generator \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"redirectRules": "/old-page /new-page\n/promo https://example.com/l…"
}'Swap in your own key from your account. The tool's fields are the body — no wrapper.
Ask an AI agent
Use the IOTools `htaccess-redirect-generator` tool (.htaccess Redirect Generator) on this input:
YOUR_INPUT_HEREPaste this at any agent connected to the IOTools MCP server, then add your input.
Embed widget
<iframe
src="https://iotools.cloud/embed/htaccess-redirect-generator/"
width="100%" height="520" frameborder="0" scrolling="no" loading="lazy"
title=".htaccess Redirect Generator — iotools.cloud"
sandbox="allow-scripts allow-forms allow-same-origin allow-downloads allow-popups allow-popups-to-escape-sandbox"
allow="clipboard-write"
style="width:100%;border:1px solid #e5e7eb;border-radius:12px;overflow:hidden"></iframe>
<script src="https://iotools.cloud/embed.js" async></script>Drop this into your own page — free, no key required, just a link back.
| Cost per API/MCP call | From 5 credits |
|---|---|
| Need more credits? | View pricing |
Also available with
Guides
The .htaccess Redirect Generator builds the Apache rules that .htaccess-rule-generator's toggle list doesn't cover: arbitrary path redirects, a whole-domain migration, and IP-based access control. Paste in a list of old→new paths, an old and new domain, or a list of IP addresses, and get a ready-to-paste, correctly-escaped .htaccess snippet.
What it generates
- Path redirects — one
Redirect 301(or302) directive per line you enter, using Apache'smod_aliasRedirectdirective rather than a rewrite rule, so it works even withoutmod_rewriteenabled. - Domain migration — a
mod_rewriteblock that 301-redirects an old domain (with or withoutwww.) to a new one, preserving the request path. - IP access control — either an allow-list (
<RequireAny>withRequire ip) that blocks everyone except the listed addresses/ranges, or a deny-list (<RequireAll>withRequire not ip) that blocks only the listed ones. Both use the Apache 2.4mod_authz_coresyntax, not the removed 2.2Order/Deny/Allowdirectives.
Any section left empty is skipped — fill in only what you need.
How to use it
- List your path redirects, one per line:
<from-path> <to-url-or-path> [301|302]. The status code defaults to301(permanent) if you leave it off. - Optionally set an old and new domain to redirect an entire site to a new host.
- Optionally pick an IP access mode and list the addresses or CIDR ranges (e.g.
203.0.113.5or198.51.100.0/24) to allow or block. - Copy the generated snippet, or download it as
.htaccess, and upload it to your site's document root (or the specific directory you want it to govern).
Frequently asked questions
How is this different from the .htaccess Rule Generator? That tool covers site-wide toggles — force HTTPS, www canonicalization, hotlink protection, gzip, caching. This tool covers the things that need a per-case list: specific path redirects, a domain migration, and IP allow/deny lists. Use both together if you need everything.
Does Redirect need mod_rewrite? No — Redirect and RedirectMatch come from mod_alias, which is enabled on virtually every Apache install by default. The domain-migration block does need mod_rewrite, which is why it's wrapped in an <IfModule> guard.
Can I redirect an entire path prefix, not just one exact path? This generator matches exact paths only (Redirect performs a prefix match on the path you give it, so /old also matches /old/page, but it won't rewrite the rest of the URL). For pattern-based rewriting with capture groups, you'll need a hand-written RewriteRule.
Is my input sent anywhere? No. The snippet is generated entirely in your browser. Nothing you type is uploaded.