[web-news] master: Canonicalises feed base URL handling (#41)
| From: | NickSdot via GitHub | Date: | Mon, 10 Aug 2026 15:21:08 +0000 |
| Subject: | [web-news] master: Canonicalises feed base URL handling (#41) | ||
| Groups: | php.webmaster | ||
| Request: | Send a blank email to php-webmaster+get-33947@lists.php.net to get a copy of this message | ||
Author: NickSdot (NickSdot)
Committer: GitHub (web-flow)
Pusher: derickr
Date: 2026-08-10T16:21:05+01:00
Commit: https://github.com/php/web-news/commit/3242085b50b1ce9cdfb2a02fdbb84b82c8a387b2
Raw diff: https://github.com/php/web-news/commit/3242085b50b1ce9cdfb2a02fdbb84b82c8a387b2.diff
Canonicalises feed base URL handling (#41)
* Canonicalise feed base URL handling
* review: standardise to news-web.php.net
Changed paths:
M README.md
M group.php
M index.php
M lib/config.php
Diff:
diff --git a/README.md b/README.md
index 70262b3..6ac1429 100644
--- a/README.md
+++ b/README.md
@@ -6,7 +6,7 @@ for local development.
```
git clone https://github.com/php/web-news.git
cd web-news/
-NNTP_HOST=news.php.net php -S localhost:8080 .router.php
+NNTP_HOST=news-web.php.net php -S localhost:8080 .router.php
```
-----
diff --git a/group.php b/group.php
index 4884b1c..005941e 100644
--- a/group.php
+++ b/group.php
@@ -29,15 +29,18 @@
error($e->getMessage());
}
-$host = htmlspecialchars($_SERVER['HTTP_HOST'], ENT_QUOTES, "UTF-8");
+$cleanBaseUrl = clean($NEWS_WEB_BASE_URL);
+$baseUrlParts = parse_url($NEWS_WEB_BASE_URL);
+$cleanBaseHost = clean($baseUrlParts['host'] . (isset($baseUrlParts['port']) ?
':' . $baseUrlParts['port'] : ''));
+$cleanGroupUrl = urlencode($group);
switch ($format) {
case 'rss':
header("Content-type: text/xml");
echo '<?xml version="1.0" encoding="utf-8"?>' .
"\n";?>
<rss version="2.0">
<channel>
- <title><?php echo $host; ?>: <?php echo $group?></title>
- <link>http://<?php echo $host;
?>/group.php?group=<?php echo $group?></link>
+ <title><?php echo $cleanBaseHost; ?>: <?php echo $group?></title>
+ <link><?php echo $cleanBaseUrl; ?>/group.php?group=<?php echo
$cleanGroupUrl?></link>
<description></description>
<?php
break;
@@ -49,8 +52,8 @@
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://my.netscape.com/rdf/simple/0.9/">
<channel>
- <title><?php echo $host; ?>: <?php echo $group?></title>
- <link>http://<?php echo $host;
?>/group.php?group=<?php echo $group?></link>
+ <title><?php echo $cleanBaseHost; ?>: <?php echo $group?></title>
+ <link><?php echo $cleanBaseUrl; ?>/group.php?group=<?php echo
$cleanGroupUrl?></link>
<description><?php echo $group?> Newsgroup at <?php echo $NNTP_HOST;
?></description>
<language>en-US</language>
</channel>
@@ -146,11 +149,13 @@
foreach ($overview['articles'] as $articleNumber => $details) {
/* $date = date("H:i:s M/d/y", strtotime($odate)); */
$date822 = date("r", strtotime($details['date']));
+ $cleanArticlePath = "/$cleanGroupUrl/" . urlencode((string) $articleNumber);
+ $cleanArticleLink = "$cleanBaseUrl$cleanArticlePath";
switch ($format) {
case 'rss':
echo " <item>\n";
- echo " <link>http://$host/$group/$articleNumber</link>\n";
+ echo " <link>$cleanArticleLink</link>\n";
echo " <title>", format_subject($details['subject'],
$charset), "</title>\n";
echo " <description>",
htmlspecialchars(format_author($details['author'], $charset), ENT_QUOTES,
"UTF-8"),
@@ -161,7 +166,7 @@
case 'rdf':
echo " <item>\n";
echo " <title>", format_subject($details['subject'],
$charset), "</title>\n";
- echo " <link>http://$host/$group/$articleNumber</link>\n";
+ echo " <link>$cleanArticleLink</link>\n";
echo " <description>",
htmlspecialchars(format_author($details['author'], $charset), ENT_QUOTES,
"UTF-8"),
"</description>\n";
diff --git a/index.php b/index.php
index 1c9d1e3..20bd3e2 100644
--- a/index.php
+++ b/index.php
@@ -17,7 +17,7 @@
head();
-$DISPLAY_NNTP_HOST = htmlspecialchars(($NNTP_HOST == 'localhost') ?
'news.php.net' : $NNTP_HOST);
+$DISPLAY_NNTP_HOST = htmlspecialchars(($NNTP_HOST == 'localhost') ?
'news-web.php.net' : $NNTP_HOST);
?>
<nav class="secondary-nav">
diff --git a/lib/config.php b/lib/config.php
index 71a3835..4a4c523 100644
--- a/lib/config.php
+++ b/lib/config.php
@@ -4,3 +4,10 @@
if (getenv('NNTP_HOST')) {
$NNTP_HOST = getenv('NNTP_HOST');
}
+
+$NEWS_WEB_BASE_URL = 'https://news-web.php.net';
+if (getenv('NEWS_WEB_BASE_URL')) {
+ $NEWS_WEB_BASE_URL = rtrim(getenv('NEWS_WEB_BASE_URL'), '/');
+} elseif (PHP_SAPI == 'cli-server') {
+ $NEWS_WEB_BASE_URL = 'http://' .
$_SERVER['HTTP_HOST'];
+}