I'm a WordPress newbie, and am working through a bunch of issues involving permalinks. I have gotten the /%postname% style permalink working on my site, but I can't figure out how they actually work -- how the URL containing the usual sort of /words-from-the-title stuff gets rewritten/redirected/whatever to the proper post.
I have the default stuff in the root directory's .htaccess file:
# BEGIN WordPress
# The directives (lines) between "BEGIN WordPress" and "END WordPress" are
# dynamically generated, and should only be modified via WordPress filters.
# Any changes to the directives between these markers will be overwritten.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
but, given my pretty-good understanding of Apache rewrite rules, I don't see how this is doing the mapping. I was half-expecting that my .htaccess file was going to get filled up with a bunch of RewriteRule statements, one for each page that needed to be redirected, but that doesn't seem to be happening. Anyway, can anybody help with my curiosity? Thanks!
The default WordPress .htaccess file only redirects all requests (from the base URL) through index.php
- which, down the line, handles all rewrites. So the rewrite logic is all within WordPress's codebase itself. That's why you do not need a rewrite rule for every single post.
Check out this source file to go more in-depth on the logic part.
A good exercise in truly learning how WordPress works is starting at index.php
(the entry point) and checking out where the code brings you.