htacess chuyển hướng tất cả ngoại trừ

Discussion in 'Hỏi Đáp Kỹ Thuật' started by wpresources, Mar 3, 2020.

  1. wpresources

    wpresources Bang Chúng

    Hì sorry,dạo này mình hỏi mã hơi nhiều.Mình có đoạn htacess,xin được giúp đỡ ạ

    Code:
    
    1.RewriteRule . /public_html/index.html [L]
    2.RewriteRule ^sitemap.xml/?$ /public_html/sitemap.xml
    
    Dòng một sitemap tất cả url được chuyển hướng đến index.html=>nên dòng 2 của mình không hoạt động được.
    Làm cách nào để em để dòng 1 chuyển tất cả đến index.html trừ những url có .xml không mọi người
     
  2. Dang

    Dang Bang Chúng

    Bữa trước bạn hỏi cách tạo sitemap cho WP mà không dùng plugin? Bạn chuyển vị trí 2 dòng đó.
    Còn theo mình, thì không cần rewrite mà dùng code để tạo sitemap và cache lại thành .xml cho nhẹ. Nếu muốn cập nhật thì request lại!
    Bên dưới là đoạn code mình đã dùng cũng khá lâu. Bạn đọc để tùy chỉnh lại, không dám giải thích :D Nếu db nhiều quá thì tùy chỉnh lại để phân nhiều sitemap!
    PHP:
    <?php

    if ((file_exists('sitemap.xml')) && (!isset($_GET['refresh'])))
    {

        
    header('Content-type: text/xml; charset=utf-8');

        echo @
    file_get_contents('sitemap.xml');

        exit();

    }

    @
    date_default_timezone_set('Asia/Bangkok');



    /**
     * include WP
     */
    define('WP_USE_THEMES'false);

    require_once (
    'wp-blog-header.php');

    // index
    $base_url get_option('siteurl');

    $xml sprintf('<url><loc>%s</loc><priority>1.00</priority></url>'$base_url);



    /**
     * posts
     */
    $posts wp_get_recent_posts(array(
        
    'numberposts' => 100,
        
    'offset' => 0,
        
    'orderby' => 'post_date',
        
    'order' => 'DESC',
        
    'post_type' => 'post',
        
    'post_status' => 'publish',
        
    'suppress_filters' => true), ARRAY_A);

    if (!empty(
    $posts))
    {

        foreach (
    $posts as $post)
        {
            
    $xml .= sprintf('<url><loc>%s</loc><lastmod>%s+07:00</lastmod></url>'get_permalink($post['ID']), str_replace(' ''T'date('Y-m-d h:i:s'strtotime($post['post_date']))));
        }

    }



    /**
     * output
     */
    header('Content-type: text/xml; charset=utf-8');

    ob_start();

    echo 
    sprintf('<?xml version="1.0" encoding="UTF-8"?><urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">%s</urlset>'$xml);

    echo 
    PHP_EOL;

    echo 
    sprintf('<!-- %s / %s -->'$_SERVER['SERVER_NAME'], date('Y-m-d H:i:s'time()));

    $content ob_get_clean();

    @
    ob_end_clean();

    echo 
    $content;

    @
    file_put_contents('sitemap.xml'$content);



    /**
     * EOF
     */
     
    Hoa Mãn Lâu and wpresources like this.
  3. wpresources

    wpresources Bang Chúng

    Thank anh để em nghiên cứu.Em cũng vừa nghiên cứu được httacess
    Code:
    RewriteRule ^(?!.*[.]xml$).*$ /public_html/index.html
    RewriteRule ^sitemap\.xml$ /public_html/sitemap/sitemap.xml
    Em thấy chạy ổn share lại cho bạn nào đi sau.Mã mới cháp vá không dám đảm bảo mã đúng hoàn toàn