เปลี่ยนเส้นทางทั้งเว็บไซต์ไปยังหน้าเดียว


10

ฉันต้องการเปลี่ยนเส้นทางเว็บไซต์ WordPress ทั้งหมดไปยังหน้า WordPress เดียว ประเภทของโหมดการบำรุงรักษา แต่การเปลี่ยนเส้นทางจะต้องไปที่หน้า WordPress ที่เผยแพร่ น่าเสียดายที่หน้าบำรุงรักษาที่ฉันต้องการแสดงนั้นต้องใช้ปลั๊กอิน WordPress อื่น ๆ

ฉันไม่ทราบเกี่ยวกับปลั๊กอินโหมดการบำรุงรักษาใด ๆ ที่ให้คุณทำสิ่งนี้ ส่วนใหญ่จะให้คุณเขียนโค้ด HTML / CSS ที่กำหนดเอง

ฉันกำลังคิดถึงกฎ. htaccess mod_rewrite อย่างไรก็ตามฉันอ่อนแอมากกับ mod_rewrite

ครั้งแรกผมเปลี่ยนเส้นทางที่ยอมรับคนพิการ

จากนั้นฉันพยายามใช้:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !^/index.php?page_id=813$
RewriteRule ^(.*)$ /index.php?page_id=813 [R=307,L]

อย่างไรก็ตามกฎเหล่านี้สร้างการวนรอบการเปลี่ยนเส้นทาง page_id=813คือ ID ของหน้าบำรุงรักษาของฉันแน่นอน

มีใครรู้บ้างเกี่ยวกับปลั๊กอินโหมดบำรุงรักษาซึ่งเปลี่ยนเส้นทางไปยังหน้าที่เผยแพร่

หรือบางคนสามารถช่วยฉันแก้ไขกฎ mod_rewrite ได้หรือไม่ ไชโยเพิ่มถ้าเราสามารถออก/wp-adminจากกฎการเปลี่ยนเส้นทาง

คำตอบ:


14

คุณสามารถทำสิ่งนี้ได้จากภายใน WordPress เองแทนที่จะต้องแก้ปัญหา. htaccess ที่สับสนและ overengineered

เราสามารถเชื่อมต่อเข้ากับtemplate_redirectตัวกรองซึ่งจะทำการยิงที่ส่วนหน้าเท่านั้น (ไม่ใช่ใน wp-admin) จากนั้นเราใช้is_page()ฟังก์ชั่นเพื่อตรวจสอบว่าเรากำลังดูหน้าเว็บที่มี ID 813 หรือไม่ถ้าไม่ให้เปลี่ยนเส้นทางไปยังหน้านั้นโดยใช้wp_redirect()ฟังก์ชั่น

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ) );
    exit;
} );

วิธีนี้จะใช้งานได้ดีสำหรับโหมดการบำรุงรักษาเนื่องจากการเปลี่ยนเส้นทางทำด้วยส่วนหัว HTTP 'ชั่วคราว' 302 จะช่วยให้บอทและเครื่องมือค้นหาทราบว่าเว็บไซต์ของคุณจะเริ่มขึ้นในไม่ช้า อย่างไรก็ตามหากคุณย้ายเว็บไซต์อย่างถาวรคุณอาจต้องการใช้ส่วนหัว HTTP 301 ถาวรสำหรับการเปลี่ยนเส้นทาง คุณสามารถทำได้โดยการเพิ่มพารามิเตอร์ตัวที่สองในwp_redirectฟังก์ชั่น ตัวอย่าง:

add_action( 'template_redirect', function() {
    if ( is_page( 813 ) ) {
        return;
    }

    wp_redirect( esc_url_raw( home_url( 'index.php?page_id=183' ) ), 301 );
    exit;
} );

มันใช้งานได้ดีสำหรับวัตถุประสงค์ของฉันเช่นกัน ยกเว้นการเพิ่มการบิด - ไซต์นั้น "ลง" เพื่อความดีและฉันต้องการให้ WP ทำงานต่อไปและเรียกใช้การแสดงหน้าลาเป็นโฮมเพจ มีวิธีเพิ่มส่วนหัว 301 ลงในการเปลี่ยนเส้นทางประเภทนี้สำหรับ SEO หรือไม่
Tapefreak

@Tapefreak คุณสามารถตั้งค่าส่วนหัว HTTP เป็นพารามิเตอร์ตัวที่สองของwp_redirectฟังก์ชั่น ตัวอย่าง:wp_redirect( home_url( 'index.php?page_id=183' ), 301 );
shea

1

ฉันได้ฝังคำตอบที่ได้รับการยอมรับโดย @shea ในปลั๊กอินเดียวและเพิ่มสองตัวเลือก: เปลี่ยนเส้นทางเฉพาะผู้ใช้ที่ไม่ใช่ผู้ดูแลระบบ & เปลี่ยนเส้นทางไปยัง URL ที่กำหนดเอง

หากสนใจโปรดอย่าลังเลที่จะดาวน์โหลดปลั๊กอินจาก Github => https://github.com/Idearia/wp-redirect-website-to-url

ตัวเลือก

ตัวเลือกปลั๊กอินนั้นง่ายมาก ในขณะนี้พวกเขาจะฮาร์ดโค้ดในไฟล์ปลั๊กอิน แต่ฉันอาจพิจารณาสร้างหน้าตัวเลือกหากมีคนร้องขอ:

  • DESTINATION_URL : URL แบบเต็มสำหรับการเปลี่ยนเส้นทางผู้ใช้ สามารถเป็นหน้านอกโดเมนเว็บไซต์
  • DESTINATION_URL_ID : หาก URL การเปลี่ยนเส้นทางเป็นหน้า WordPress หรือโพสต์ระบุที่นี่ ID ของ WordPress
  • USER_CAPABILITY : ผู้ใช้ที่มีความสามารถนี้จะไม่ถูกเปลี่ยนเส้นทาง เว้นว่างไว้เพื่อเปลี่ยนเส้นทางทุกคน ค่าเริ่มต้นคือ 'manage_options' ซึ่งเปิดใช้งานสำหรับผู้ใช้ที่เป็นผู้ดูแลระบบ
  • REDIRECT_STATUS_CODE : สถานะการเปลี่ยนเส้นทาง: 302 สำหรับการเปลี่ยนเส้นทางชั่วคราว 301 สำหรับการเปลี่ยนเส้นทางถาวร
  • DEBUG : จะพิมพ์ข้อมูลการดีบักใน debug.log หรือไม่

การปรับปรุงข้อมูลในหน้า Github => https://github.com/Idearia/wp-redirect-website-to-url

โปรดทราบว่าปลั๊กอินนั้นพื้นฐานมาก ผู้ใช้ขั้นสูงอาจพิจารณาปลั๊กอินบำรุงรักษาหนึ่งตัวที่มีอยู่ในที่เก็บปลั๊กอิน WordPress.org แทน

แจ้งให้เราทราบหากคุณมีปัญหาในการใช้งานปลั๊กอิน😊


0

ฉันจะหาทางออกที่ง่ายกว่านี้มาก ข้อสันนิษฐานของฉันคือคุณต้องการให้ใครเห็นหน้าเดียวเท่านั้นไม่จำเป็นต้องมองเห็นหน้า WP ใด ๆ สำหรับคำขอใด ๆ สำหรับโดเมนของคุณ

เหตุใดจึงไม่สร้างหน้า HTML ให้กำหนดลักษณะด้วย CSS บางส่วนและวางหน้านั้นไว้ในโฟลเดอร์อื่นบนแพลตฟอร์มการโฮสต์ของคุณ ตรวจสอบให้แน่ใจว่าหน้าดูเหมือนว่าคุณต้องการ

จากนั้นเพียงแค่ชี้โดเมนของคุณไปที่โฟลเดอร์ใหม่ ด้วยแพลตฟอร์มโฮสติ้งส่วนใหญ่คุณสามารถระบุโฟลเดอร์ฐานของโดเมน ดังนั้นชี้โดเมนของคุณไปที่โฟลเดอร์ฐานใหม่ ไม่จำเป็นต้องเปลี่ยนเส้นทาง htaccess ที่ซับซ้อนหรือปลั๊กอิน WP หรือตัวกรองพิเศษเพื่อขอเข้าสู่ WP

หรือคุณสามารถย้ายเนื้อหาทั้งหมดออกจากโฟลเดอร์รูทโดเมนปัจจุบันและวางไฟล์ HTML แบบง่าย ๆ ไว้ที่เดิม

อาจให้บริการพื้นที่ด้วย 'การเปลี่ยนเส้นทางทั่วโลก' สำหรับคำขอใด ๆ ไปยังหน้าใดก็ได้ในโดเมนของคุณ

ไม่ว่าจะด้วยวิธีใดก็จะเป็นวิธีแก้ปัญหาที่ง่ายสำหรับความต้องการของคุณที่จะมีหน้าเดียวสำหรับทั้งโดเมนของคุณ

หากคุณต้องการโซลูชัน htaccess จริงๆให้ใช้วิธีนี้:

RewriteEngine on

RewriteRule ^(.*)$ http://www.example.com/  [R=permanent,L]

.. แทนที่ด้วยโดเมนจริงของคุณทำให้ SEO มีความสุขเช่นกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.