اذهب إلى المحتوى

السؤال

نشر

لدي مشكلة في عدم فهرسة النشرات الجوية في موقعي بعد التعديلات ليصبح شكل رابط النشرة متوافق ما محرك البحث مثل

 

https://ajwa4alearab.freewebhostmost.com/Blog/article_Weather/كابوس-الفيضانات-يعود-في-تونس-أجواء-العرب-ترصد-المشاهد-الصادمة-للفيضانات-التاريخية-245

 

لكن جوجل لا يزحف لموقع للعلم اني اضفت خريطة موقع

 

https://ajwa4alearab.freewebhostmost.com/Blog/sitemap.xml

 

الحل لو تكرمتم

استخدم 

RewriteEngine On  

RewriteRule ^article_Weather/(.*)-(\d+)$ article_Weather.php?id=$2 [L,QSA]  

RewriteCond %{THE_REQUEST} /article_Weather\.php\?id=([0-9]+) [NC]  

RewriteRule ^ /Blog/article_Weather/%1? [R=301,L]

 

هذا كود الصفحة 

<?php
require 'db.php';

// دالة إنشاء slug من النص
function createSlug($text) {
    // إزالة جميع الأحرف غير الآمنة
    $text = preg_replace('/[^\p{Arabic}\p{L}\p{N}\s]/u', '', $text);
    // استبدال المسافات بشرطات
    $text = preg_replace('/\s+/', '-', $text);
    // إزالة الشرطات من البداية والنهاية
    $text = trim($text, '-');
    // تحويل إلى حروف صغيرة
    return mb_strtolower($text);
}

// جلب معرف المقال من الرابط
if (preg_match('/-(\d+)$/', $_SERVER['REQUEST_URI'], $matches)) {
    $id = $matches[1];
} else {
    header('Location: 404.php');
    exit;
}

$stmt = $conn->prepare("SELECT a.title, a.content, a.category, a.created_at, a.image_url, u.username, u.profile_image, u.bio
                        FROM articles a
                        JOIN users u ON a.user_id = u.id
                        WHERE a.id = ?");
$stmt->execute([$id]);
$article = $stmt->fetch();

if (!$article) {
    header('Location: 404.php');
    exit;
}

$title = base64_decode($article['title']);
$category = base64_decode($article['category']);
$content = base64_decode($article['content']);
$image_url = $article['image_url'];
$username = base64_decode($article['username']);
$profile_image = $article['profile_image'];
$bio = base64_decode($article['bio']);
$slug = createSlug($title);

// جلب المقالات ذات الصلة
$related_articles = getRelatedArticles($conn, $article['category'], $id);

// جلب المقالات المقترحة
$suggested_articles = getSuggestedArticles($conn, $content, $id);

// جلب المقالات الأحدث
$latest_articles = getLatestArticles($conn, $id);

function getRelatedArticles($conn, $category, $currentArticleId) {
    $stmt = $conn->prepare("SELECT id, title, image_url FROM articles WHERE category = ? AND id != ? ORDER BY created_at DESC LIMIT 3");
    $stmt->execute([$category, $currentArticleId]);
    $articles = $stmt->fetchAll();
   
    foreach ($articles as &$article) {
        $article['title_decoded'] = base64_decode($article['title']);
        $article['slug'] = createSlug($article['title_decoded']);
    }
   
    return $articles;
}

function getSuggestedArticles($conn, $content, $currentArticleId) {
    $keywords = extractKeywords($content);
    $stmt = $conn->prepare("SELECT id, title, content, image_url FROM articles WHERE id != ?");
    $stmt->execute([$currentArticleId]);
    $all_articles = $stmt->fetchAll();

    $suggested_articles = [];
    foreach ($all_articles as $article) {
        $article['title_decoded'] = base64_decode($article['title']);
        $article['slug'] = createSlug($article['title_decoded']);
        $articleKeywords = extractKeywords(base64_decode($article['content']));
        $similarity = calculateCosineSimilarity($keywords, $articleKeywords);
        if ($similarity > 0.2) {
            $suggested_articles[] = $article;
        }
    }

    usort($suggested_articles, function($a, $b) use ($keywords) {
        $aKeywords = extractKeywords(base64_decode($a['content']));
        $bKeywords = extractKeywords(base64_decode($b['content']));
        return calculateCosineSimilarity($keywords, $bKeywords) <=> calculateCosineSimilarity($keywords, $aKeywords);
    });

    return array_slice($suggested_articles, 0, 3);
}

function getLatestArticles($conn, $currentArticleId) {
    $stmt = $conn->prepare("SELECT id, title, image_url FROM articles WHERE id != ? ORDER BY created_at DESC LIMIT 3");
    $stmt->execute([$currentArticleId]);
    $articles = $stmt->fetchAll();

    foreach ($articles as &$article) {
        $article['title_decoded'] = base64_decode($article['title']);
        $article['slug'] = createSlug($article['title_decoded']);
    }

    return $articles;
}

function extractKeywords($text) {
    $text = preg_replace('/[^\p{L}\p{N}\s]/u', '', $text);
    $text = mb_strtolower($text);
    $words = preg_split('/\s+/', $text, -1, PREG_SPLIT_NO_EMPTY);
    $stopWords = ['و', 'في', 'من', 'على', 'إلى', 'عن', 'أن', 'هذا', 'هذه', 'ذلك', 'هؤلاء'];
    $words = array_diff($words, $stopWords);
    return array_count_values($words);
}

function calculateCosineSimilarity($vec1, $vec2) {
    $intersection = array_intersect_key($vec1, $vec2);
    $dotProduct = 0;
    $magnitude1 = 0;
    $magnitude2 = 0;

    foreach ($intersection as $key => $value) {
        $dotProduct += $vec1[$key] * $vec2[$key];
    }

    foreach ($vec1 as $key => $value) {
        $magnitude1 += $value * $value;
    }

    foreach ($vec2 as $key => $value) {
        $magnitude2 += $value * $value;
    }

    $magnitude1 = sqrt($magnitude1);
    $magnitude2 = sqrt($magnitude2);

    return ($magnitude1 == 0 || $magnitude2 == 0) ? 0 : $dotProduct / ($magnitude1 * $magnitude2);
}
?>
<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
   
    <!-- Title & SEO Meta Tags -->
    <title><?= htmlspecialchars($title) ?></title>
    <meta name="description" content="<?= htmlspecialchars($title) ?> - <?= htmlspecialchars($category) ?> - <?= htmlspecialchars(substr(strip_tags($content), 0, 150)) ?>">
    <meta name="keywords" content="<?= htmlspecialchars($category) ?>, <?= htmlspecialchars($title) ?>, مقالات, أخبار, مدونة">

    <!-- Open Graph / Facebook -->
  
      <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap/5.3.3/css/bootstrap.min.css">
  
  
   
   
 
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/css/all.min.css">
  
  
   
</head>
<body>
 
   
<?php include 'article_navbar.php'; ?>
  
<div class="container">
        <div class="article-header">
            <h1 class="article-title"><?= htmlspecialchars($category) ?> | <?= htmlspecialchars($title) ?></h1>
            <p class="article-date"><em><?= $article['created_at'] ?></em></p>
        </div>
        <?php if (!empty($image_url)): ?>
            <div class="article-images">
                <img src="<?= htmlspecialchars($image_url) ?>" alt="<?= htmlspecialchars($title) ?>">
            </div>
        <?php endif; ?>
        <div class="article-content">
            <?= $content ?>
        </div>
         <?php include 'ad.php'; ?>
        <div class="article-categories">
            التصنيفات: <?= htmlspecialchars($category) ?>
        </div>
        <div class="profile" onclick="toggleProfilePopup()">
            <?php if (!empty($profile_image)): ?>
                <img src="<?= htmlspecialchars($profile_image) ?>" alt="<?= htmlspecialchars($username) ?>">
            <?php endif; ?>
            <p class="username"><?= htmlspecialchars($username) ?></p>
        </div>
        <div id="profile-popup" class="profile-popup">
            <h5><?= htmlspecialchars($username) ?></h5>
            <p><?= htmlspecialchars($bio) ?></p>
        </div>

  
  

    <!-- صور المقال مع وصف محسن -->
  
    <!-- المقالات ذات الصلة -->
    <?php if (count($related_articles) > 0): ?>
        <div class="related-articles">
            <h2>مقالات مرتبطة</h2>
            <?php foreach ($related_articles as $related): ?>
                <a href="https://ajwa4alearab.freewebhostmost.com/Blog/article_Weather/<?= $related['slug'] ?>-<?= $related['id'] ?>"
                   class="related-article"
                   itemprop="relatedLink">
                    <img src="<?= htmlspecialchars($related['image_url']) ?>"
                         alt="<?= htmlspecialchars($related['title_decoded']) ?>"
                         title="<?= htmlspecialchars($related['title_decoded']) ?>">
                    <div class="related-article-title"><?= htmlspecialchars($related['title_decoded']) ?></div>
                </a>
            <?php endforeach; ?>
        </div>
    <?php endif; ?>

    <!-- المقالات المقترحة -->
    <?php if (count($suggested_articles) > 0): ?>
        <div class="suggested-articles">
            <h2>اقتراحات مبنية على قراءتك</h2>
            <?php foreach ($suggested_articles as $suggested): ?>
                <a href="https://ajwa4alearab.freewebhostmost.com/Blog/article_Weather/<?= $suggested['slug'] ?>-<?= $suggested['id'] ?>"
                   class="suggested-article"
                   itemprop="suggestedLink">
                    <img src="<?= htmlspecialchars($suggested['image_url']) ?>"
                         alt="<?= htmlspecialchars($suggested['title_decoded']) ?>"
                         title="<?= htmlspecialchars($suggested['title_decoded']) ?>">
                    <div class="suggested-article-title"><?= htmlspecialchars($suggested['title_decoded']) ?></div>
                </a>
            <?php endforeach; ?>
        </div>
    <?php endif; ?>

    <!-- أحدث المقالات -->
    <?php if (count($latest_articles) > 0): ?>
        <div class="suggested-articles">
            <h2>جديدنا</h2>
            <?php foreach ($latest_articles as $latest): ?>
                <a href="https://ajwa4alearab.freewebhostmost.com/Blog/article_Weather/<?= $latest['slug'] ?>-<?= $latest['id'] ?>"
                   class="suggested-article"
                   itemprop="latestLink">
                    <img src="<?= htmlspecialchars($latest['image_url']) ?>"
                         alt="<?= htmlspecialchars($latest['title_decoded']) ?>"
                         title="<?= htmlspecialchars($latest['title_decoded']) ?>">
                    <div class="latest-article-title"><?= htmlspecialchars($latest['title_decoded']) ?></div>
                </a>
            <?php endforeach; ?>
        </div>
    <?php endif; ?>
</div>
    <?php include 'footer.php'; ?>
   
    <script>
        function toggleProfilePopup() {
            var popup = document.getElementById('profile-popup');
            popup.style.display = popup.style.display === 'block' ? 'none' : 'block';
        }
    </script>
</body>
</html>

 

Recommended Posts

لا توجد أي إجابات على هذا السؤال بعد

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...