หลังจากการโยกย้ายเซิร์ฟเวอร์หน้าแรกใช้งานได้เท่านั้น


33

ฉันได้เพิ่งเปลี่ยนโฮสติ้งของเว็บไซต์ WordPress ของฉันไปVPS.net ฉันย้ายไฟล์ทั้งหมดของฉันแล้วนำเข้าฐานข้อมูล ทุกอย่างดูเหมือนจะไม่เป็นไรจนกว่าฉันจะคลิกลิงก์และสังเกตว่าหน้าเว็บของฉันทั้งหมดนำกลับ 404 ยกเว้นหน้าแรก

URL ของเว็บไซต์คือhttp://inksquared.com


คำตอบ:


42

ฉันเดาว่าคุณจะได้รับhttp: // yoursiteแต่http: // yoursite / อะไรก็ตาม

ฉันมีปัญหาที่คล้ายกันและได้รับการแก้ไขเมื่อฉันเปลี่ยน

httpd.confจาก

AllowOverride None

ไปยัง

AllowOverride All

ตามความเข้าใจของฉันมันจะทำให้.htaccessเกิดผล


6
อันนี้ใช้ได้สำหรับฉัน คนส่วนใหญ่ลืมเรื่องนี้ไป
qasimzee

1
สิ่งนี้ได้ผลสำหรับฉันด้วยเช่นกันเพียงแค่เปลี่ยนในส่วนของapache2.confสำหรับตำแหน่งของไฟล์เซิร์ฟเวอร์/var/wwwของฉันในกรณีของฉัน
sponrad

1
นี่เป็นส่วนหนึ่งของคำตอบสำหรับฉัน ฉันจะเพิ่มAllowOverride Allการกำหนดค่าเว็บไซต์ Options FollowSymLinksแต่ฉันยังเพิ่ม ฉันสามารถใช้ลิงก์ถาวรที่กำหนดเองซึ่งสร้างไฟล์. htaccess ในรูตที่เหมาะสม หลังจากนั้นทุกอย่างก็ทำงาน
boot13

1
และอย่าลืมรีสตาร์ท apache! "sudo service apache2 เริ่มใหม่"
gradosevic

1
มันได้ผล ตรวจสอบให้แน่ใจว่าคุณเปลี่ยนตัวเลือก AllowOverride ที่ตำแหน่งในไฟล์ conf
Najeeb

44

ลองล้างกฎ mod_rewrite ของคุณ:

แดชบอร์ด -> การตั้งค่า -> ลิงก์ถาวร

บันทึกการตั้งค่า (ไม่จำเป็นต้องทำการเปลี่ยนแปลงใด ๆ )


7
ไม่จำเป็นต้องบันทึกแม้แต่อันที่จริงแล้ว กฎจะถูกลบทิ้งเพียงแค่ไปที่หน้านั้นและเป็นส่วนหนึ่งของการล้างกฎที่เกี่ยวข้องกับการเขียนไปยัง. htaccess
John P Bloch

ฉันเรียนรู้สิ่งใหม่ทุกวัน ... :)
Chip Bennett

@ จอห์นคุณแน่ใจหรือว่าแค่โหลดหน้าเว็บเขียนถึง. htaccess หากต้องการ? ฉันอยู่ภายใต้การแสดงผลที่ล้างข้อมูล rewrite_rules ในฐานข้อมูลเท่านั้น
Ashfame

wp-admin / options-permalinks.php การเรียกใช้flush_rewrite_rules(), wrapper สำหรับWP_Rewrite::flush_rules()ซึ่งหาก$hardเป็นtrue(ซึ่งจะถูกเรียกเมื่อหน้านั้น) และมีฟังก์ชันsave_mod_rewrite_rules(กำหนดไว้ในwp-admin/includes/misc.phpรวมอยู่ในหน้าผู้ดูแลระบบทั้งหมด) จะเรียกsave_mod_rewrite_rules()ใช้ ดูคำจำกัดความของฟังก์ชั่นได้ที่นี่: core.trac.wordpress.org/browser/trunk/wp-admin/includes/ …
John P Bloch

ฟังก์ชั่นที่เขียนกฎการเขียนซ้ำไปยัง. htaccess จริง ๆ แล้วเรียกว่าinsert_with_markers(ใช้ในsave_mod_rewrite_rules()ด้านบน) ซึ่งกำหนดไว้ที่นี่: core.trac.wordpress.org/browser/trunk/wp-admin/includes/ ...
John P Bloch

27

ฉันประสบปัญหาเดียวกัน

ฉันทำสิ่งต่อไปนี้เพื่อแก้ไขบนเซิร์ฟเวอร์ Ubuntu:

  1. ใน/etc/apache2/apache2.confให้แก้ไขAllowOverride Noneสำหรับ/ var / www /เป็นAllowOverride ทั้งหมด

  2. พิมพ์คำสั่งต่อไปนี้เพื่อเปิดใช้งาน mod_rewrite สำหรับ. htaccess

sudo a2enmod เขียนใหม่

  1. รีสตาร์ทเซิร์ฟเวอร์ apache ของคุณ:

sudo service apache2 เริ่มต้นใหม่

ปัญหาได้รับการแก้ไข !!!


ขอบคุณฉันไม่สามารถแก้ไขสิ่งนี้ด้วยคำแนะนำอื่นใดa2enmod rewriteได้
Martin McCallion

+1 สำหรับการพูดถึง mod ที่เขียนใหม่ ไม่ทราบว่านี่ไม่ได้เปิดใช้งานตามค่าเริ่มต้น
Native Coder

จำเป็นต้องมีแน่นอนที่sudo a2enmod rewriteจะได้รับ wokring นี้ขอบคุณ!
Huskie69

1
ขอบคุณ! คำสั่งa2enmod rewriteทำเคล็ดลับสำหรับฉัน
Lucas Basquerotto

ขอบคุณ Avinash! เช่นเดียวกับลูคัสการเขียน a2enmod ได้ทำเคล็ดลับสำหรับฉัน
Jero Dungog

1

เหตุผลที่เป็นไปได้มากที่สุดคือ.htaccessไฟล์ไม่ได้ถูกคัดลอก บน Mac OS X และในการใช้งาน FTP บางไฟล์นี้ถือว่า "ซ่อน" .เพราะมันเริ่มต้นด้วย หากคุณไปที่ส่วนการตั้งค่า -> ลิงก์ถาวรในส่วนผู้ดูแลระบบของคุณคุณสามารถสร้างไฟล์นี้ใหม่ แต่อาจเป็นการดีที่สุดที่จะค้นหารุ่นที่คุณเคยใช้มาก่อนและใช้ไฟล์นั้นอีกครั้ง


1

ใน Ubuntu 14.04 - ไฟล์000-default.confสามารถดูได้ที่นี่/etc/apache2/sites-available

หรือถ้าคุณเรียกใช้หลาย wp การตั้งค่าโฮสต์เสมือนจะเป็นชื่อไฟล์กำหนดค่าของคุณ เช่นdomain.conf

คุณต้องเปลี่ยนAllowOverride Noneเป็นAllowOverride All

หวังว่ามันจะใช้ได้


0

คุณได้รับเว็บเซิร์ฟเวอร์ 404 หรือ WordPress 404 หรือไม่? หากเป็นเว็บเซิร์ฟเวอร์ 404 คุณน่าจะไม่ได้คัดลอกไฟล์ root htaccess จากการติดตั้งเก่าหรือไม่มีสิทธิ์ที่ถูกต้องในการเรียกใช้

รายการแก้ไขปัญหาแรกของฉันคือการตรวจสอบและดูว่ามีไฟล์ htaccess อยู่ในรูทหรือไม่ และถ้าเป็นเช่นนั้นสิ่งที่มันมี


ตรวจสอบไฟล์. htaccess มันมีรหัสเดียวกันที่ปรากฏในส่วน Permalink ของแผง admin WordPress ฉันเปลี่ยนสิทธิ์เป็นเขียนได้และไม่เห็นการเปลี่ยนแปลงที่ชัดเจน
mikeyrocks

3
@mikeyrocks อืม ... ความเป็นไปได้อีกอย่างคือเซิร์ฟเวอร์ใหม่ของคุณไม่ได้เปิด mod_rewrite สำคัญ: คุณได้รับเซิร์ฟเวอร์ 404 (หน้าขาวธรรมดาที่ระบุว่า "ไม่พบ") ​​หรือ WordPress 404 (มีสไตล์เหมือนกับส่วนที่เหลือของไซต์ของคุณ) หรือไม่
MathSmath
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.