Tôi đang làm việc trên một ứng dụng PHP và tôi đã chuyển nó từ apache sang máy chủ nginx. Tôi có một trang php tự động tạo các tệp xml cho sơ đồ trang web. Điều này hoạt động hoàn hảo trong máy chủ apache nhưng khi tôi chuyển sang nginx thì nó không hoạt động.
Đây là mã mà tôi đang sử dụng trong apache
RewriteRule ^([^/]+)\.xml/?$ sitemap.php?p=$1 [QSA,L]
Đây là mã tôi đã sử dụng trong nginx
viết lại "^/([^/]+)\.xml/?$" /sitemap.php?p=$1 cuối cùng;
Đây là hoàn chỉnh tập tin cấu hình nginx.
Đây là những gì tôi đang sử dụng để tạo các trang xml một cách linh hoạt (không bao gồm mã hoàn chỉnh)
<?php
require_once( './inc/header.inc.php' );
$connect = mysqli_connect(DATABASE_HOST, DATABASE_USER, DATABASE_PASS, DATABASE_NAME);
mysqli_set_charset($connect, "utf8");
header("Content-Type: application/xml; charset=utf-8");
echo '<?xml version="1.0" encoding="UTF-8"?>'.PHP_EOL;
// How many items to list per page
$limit = 10000;
if (!empty($_GET["p"])) {
$page = $_GET["p"];
if ($page === "sitemap_core") {
// Sitemap Core Page Starts
echo '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">'.PHP_EOL;
$core_sitemap_url_arr = array('terms', 'join', 'login', 'blog/', 'about-us', 'sb', 'sm', 'msb');
foreach ($core_sitemap_url_arr as $url) {
echo '<url>'.PHP_EOL;
echo '<loc>'.BX_DOL_URL_ROOT.$url.'</loc>'.PHP_EOL;
echo '<lastmod>'.date('Y-m-d').'</lastmod>'.PHP_EOL;
echo '<changefreq>daily</changefreq>'.PHP_EOL;
echo '</url>'.PHP_EOL;
}
echo '</urlset>'.PHP_EOL;
// Sitemap Core Page Ends
}
}
else {
header("Location:" .BX_DOL_URL_ROOT."404");
}
?>