Раньше я шел в обоих направлениях, и хотя у них обоих есть свои плюсы и минусы, я склоняюсь к вашему второму варианту - единственной главной странице, содержащей макет. Это похоже на то, как главные страницы работают в настольных издательских приложениях, и ASP.NET имеет хорошую реализацию этой идеи - не то, чтобы я говорил, что вам следует переключать технологии.
Однако, если вы пойдете по этому пути, используйте mod_rewrite, чтобы получить ваши пути на главную страницу PHP, а не строки запросов в ваших URL. Ваш файл .htaccess должен содержать что-то вроде:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [S=1]
RewriteRule ^(.*)$ /index.php?path=$1 [QSA]
Это, в основном, говорит, что файл, который они запрашивают, не существует, вместо того, чтобы передать ошибку 404 при обработке файла index.php с путем URL-адреса в переменной строки запроса. Таким образом, «http://example.com/path/to/page" завершает работу с index.php с $ _GET ['path'], установленным в" / path / to / page ". Отсюда вы можете извлекать контент из базы данных, плоского файла или чего Вы. Вы также можете выбрать различные шаблоны в зависимости от запрошенного пути.