- Fixed the subdirectory loading issue.

Changed:
[app/View.php](/Users/tyemeclifford/Documents/GH/blog/app/View.php): 
generated URLs now honor a base path like /blog.
[app/Config.php](/Users/tyemeclifford/Documents/GH/blog/app/Config.php): 
added base_path support and derives it from base_url or SCRIPT_NAME.
[app/App.php](/Users/tyemeclifford/Documents/GH/blog/app/App.php): route 
parsing strips the base path, and PHP can safely serve theme/upload 
assets for virtual subdirectory previews.
[.htaccess](/Users/tyemeclifford/Documents/GH/blog/.htaccess): removed 
hardcoded RewriteBase /.
[themes/neon/layout.php](/Users/tyemeclifford/Documents/GH/blog/themes/neon/layout.php): 
root-relative social links like /feed.xml now become /blog/feed.xml.
[README.md](/Users/tyemeclifford/Documents/GH/blog/README.md): 
documented subdirectory setup.
This commit is contained in:
Ty Clifford
2026-07-04 19:54:54 -04:00
parent 782b983bf4
commit 94aea8501f
8 changed files with 140 additions and 5 deletions
+7 -1
View File
@@ -179,7 +179,13 @@ $renderPagination = static function (array $pagination, callable $url): void { ?
<h2>Social</h2>
<div class="social-list">
<?php foreach ($social as $network => $entry): ?>
<a href="<?= View::e($entry['url'] ?? '#') ?>" rel="me noopener" target="_blank"><?= View::e($entry['label'] ?? $network) ?></a>
<?php
$socialUrl = (string) ($entry['url'] ?? '#');
if (str_starts_with($socialUrl, '/') && !str_starts_with($socialUrl, '//')) {
$socialUrl = View::url(ltrim($socialUrl, '/'));
}
?>
<a href="<?= View::e($socialUrl) ?>" rel="me noopener" target="_blank"><?= View::e($entry['label'] ?? $network) ?></a>
<?php endforeach; ?>
</div>
</section>