Wordpress делает это, переписывая все, что не разрешается как файл или каталог, в index.php
, это выглядит так:
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
И index.php читает запрошенный URI и выясняет, что с ним делать. В то же время WordPress знает, что эти URL-адреса переписываются, поэтому он отображает страницы с чистыми SEO-дружественными URL-адресами, такими как http://example.com/pagename/
.
.
Для вашего примера, сам mod_rewrite не сможет узнать, что id = 3 соответствует имя_папки , если вы не закодируете несколько отдельных RewriteRules. Что вы можете сделать, это заставит index.php принять имя_папки , чтобы ваше правило выглядело примерно так:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ /index.php?page=$1 [L]
Теперь нужно создать чистые SEO-дружественные URL в вашем контенте. В системах управления контентом сами страницы обычно хранятся в базе данных под каким-либо идентификатором. Скажем, страница «Тестовая страница» с идентификатором в базе данных как «5», созданная 10 октября 2011 года. Когда CMS необходимо сгенерировать ссылку, она просматривает базу данных и создает ссылку как /2011/10/Test_Page
.
Поэтому, когда вы переходите, скажем, на первую страницу, index.php генерирует ссылки на все свои страницы и для «Тестовой страницы», ссылка говорит /2011/10/Test_Page
, и когда кто-то нажимает на эту ссылку, apache использует правило например RewriteRule ^([0-9]+)/([0-9]+)/(.+)$ /index.php?year=$1&month=$2&title=$3 [L]
, чтобы переписать URL-адрес на /index.php?year=2011&month=10&title=Test_Page
. Сценарий index.php ищет в базе данных правильную страницу и возвращает ее в браузер. Это будет отличаться для каждой CMS. По сути, .htaccess не будет знать ничего, что хранится в вашей базе данных, но он может перезаписывать ссылки, чтобы требуемая информация (например, «id» или «page») передавалась в сценарий. Сценарий сам решает, какую страницу возвращать и , чтобы генерировать чистые SEO-дружественные ссылки на этой странице.