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'];
+}

Reply via email to