WordPress đang cung cấp cho tôi trang 404 không tìm thấy cho tất cả các trang trừ trang chủ


115

Thật bất ngờ, tôi vào trang web WordPress của mình và tất cả các trang cung cấp cho tôi một trang 404 không tìm thấy trang. Tôi cho rằng vấn đề nằm ở cấu trúc permalink, điều mà tôi có thể thề là tôi đã không chạm vào. Cài đặt permalink là vào "tháng và tên."

Tôi đã nghiên cứu các trường hợp tương tự của vấn đề này trực tuyến và rất nhiều vấn đề phải làm với .htaccesstệp? Tôi đã cố gắng tìm kiếm, nhưng tôi không thể. Có lẽ nó đã bị xóa bằng cách nào đó? Nó được đặt ở đâu

Bất kỳ đề xuất sẽ rất hữu ích

và tất nhiên tôi có thể thấy các tập tin ẩn.


Đề nghị bạn hỏi điều này trên wordpress.stackexchange.com .
James Wiseman

Câu trả lời:


95

.htaccess là một tệp ẩn, vì vậy bạn phải đặt tất cả các tệp hiển thị trong ftp của mình.

Tôi đề nghị bạn trả cấu trúc permalink của mình về mặc định (? P = ID) để bạn đảm bảo rằng .htaccess là vấn đề.

Sau đó, bạn có thể chỉ cần đặt lại cấu trúc "tháng và tên" và xem nó có hoạt động không.

PS: Bạn đã nâng cấp lên 3.1 chưa? Tôi đã thấy một số người có vấn đề về plugin trong trường hợp này.


1
vâng tôi đã hiển thị các tập tin ẩn. Tôi đã chuyển đổi qua lại từ mặc định sang perma và nó hoạt động theo mặc định. Ngoài ra, wordpress có tự cập nhật hay cái gì không? Tôi nhận thấy rằng khi tôi đăng nhập, tôi có một thanh tác vụ quản trị viên mới trên trang web của mình, cái mà trước đây tôi không có. Tôi không biết làm thế nào nó đạt được điều đó.
Adam

ai đó đã cập nhật nhầm thành 3.1, do đó, nó bị xung đột với một plugin
Adam

1
Thiếu .htaccesscũng có thể dẫn đến vấn đề này, bất cứ điều gì bạn sửa permalink, vì vậy hãy kiểm tra xem trước, không bị ẩn hoặc mất tích
Osify

1
Chỉ cần đăng nhập vào quản trị viên WordPress và lưu lại parmalinks. Điều này sẽ tạo ra một tập tin .htaccess hoặc cập nhật tập tin hiện có.
Keyur Patel

Tôi đã thử sử dụng admin và cập nhật thủ công tệp .htaccess nhưng vẫn gặp sự cố. Vô hiệu hóa Plugin cũng như không khắc phục sự cố permalink.
Jaymin

56

Về cơ bản, tệp .htaccess phải tồn tại và httpd.conf phải chính xác.

Trong trường hợp của tôi, tôi đã thay đổi tệp /etc/apache2/apache2.conf trong phần:

<Directory "/var/www/html">

Dòng thay đổi là:

AllowOverride None

đến

AllowOverride All

Và khởi động lại máy chủ web với

systemctl restart apache2

1
cảm ơn, điều đó đã giúp Trong trường hợp của tôi, cài đặt AllowOverride bị thiếu.
giẻ rách

1
Điều này đã sửa nó cho tôi quá. Tôi đang sử dụng scotchbox mơ hồ cho những gì nó có giá trị.
Matt Kaye

2
Điều này gần như luôn luôn là vấn đề. Nên là câu trả lời hàng đầu.
Noel Baron

Điều này đã khắc phục vấn đề cho tôi- Nên là câu trả lời được chấp nhận
Charles

52

Sửa vấn đề mà rất đơn giản nếu bạn đã sử dụng Permalinks khác hơn defaultnhư Day and name, Month and name, Numeric, Post namehay Custom Structure, bạn chỉ cần

Đăng nhập vào khu vực quản trị của bạn: Settings > Permalinksphải là:http://yoursite.com/wp-admin/options-permalink.php

Chọn Defaultcài đặt permalink , sau đó lưu thay đổi

Sau đó, bạn có thể trả lại lần nữa cho lựa chọn permalink trước đó của bạn hoặc giữ nó như bạn defaultmuốn

Lưu ý rằng vấn đề này có thể xảy ra khi bạn di chuyển trang web của mình từ một tên miền hoặc vị trí sang một tên miền khác.


1
Điều này phần nào giúp tôi, tôi đã có một số lỗi cơ sở dữ liệu và sau đó tất cả các trang của tôi là 404. Chuyển đổi tùy chọn permalink sang tùy chọn khác (chẳng hạn như đơn giản) sau đó quay lại tùy chọn mặc định đã sửa tất cả các liên kết của tôi!
PaulBGD

Rất vui khi biết điều đó :)
usama sulaiman

2
Câu trả lời hoàn hảo +100
handiansom

Làm cách nào tôi có thể trở lại cài đặt permalink mặc định khi thậm chí mysite.com/wp-adminkhông hoạt động?
J86

Câu trả lời hoàn hảo
+10086

29

Nếu hành vi mặc định ( example.com/?p=42) đang hoạt động, bạn nên:

  • Thay đổi kiểu permalink ưa thích của bạn: Admin: Settings > Permalinksvà nhấp vào Lưu. Đôi khi nó khắc phục vấn đề. Nếu nó không:
  • Xác minh rằng tệp /path/to/wordpress/.htaccessđã được thay đổi và hiện bao gồm dòng RewriteEngine On. Nếu nó không bao gồm dòng, thì đó là vấn đề về quyền của Wordpress.
  • Xác minh rằng mô-đun 'viết lại' đã được tải: tạo một tệp PHP với

    <?php
      phpinfo()
    ?>

    trong đó, mở nó trong trình duyệt và tìm kiếm mod_rewrite. Nó phải nằm trong phần 'Các mô-đun được tải'. Nếu không, hãy bật nó - Xem index.htmltệp mặc định apache của bạn để biết chi tiết - trong Ubuntu, bạn làm điều đó với trình trợ giúp a2enmod.

  • Xác minh rằng máy chủ apache đang xem .htaccesstệp. mở httpd.conf- hoặc là sự thay thế của Ubuntu , /etc/apache2/apache2.conf. Trong đó, bạn nên có một cái gì đó như

    <Directory /path/to/wordpress>
      Options Indexes FollowSymLinks
      AllowOverride All
      Require all granted
    </Directory>
  • Sau khi thực hiện những thay đổi này, đừng quên khởi động lại máy chủ apache của bạn. sudo service apache2 restart


20

NẾU tất cả điều này không hoạt động, .htaccess của bạn là chính xác và thủ thuật permalinks không hoạt động, bạn có thể chưa kích hoạt mod apache2 của bạn .

Tôi đã chạy nó và vấn đề của tôi đã được giải quyết:

 sudo a2enmod rewrite 

Tìm kiếm mod_rewritetrong phpinfo();trang để kiểm tra nếu bạn đã kích hoạt. Đó là trong Loaded Modulescácapache2
vanduc1102

9

Trong giao diện quản trị viên WordPress, hãy làm như sau:

  1. Chuyển đến cài đặt quản trị

  2. Nhấp vào permalink và chọn tên bài đăng trong nút radio.

  3. Cuộn xuống và bạn sẽ thấy .htaccessmã ở đây như thế nào.

    <IfModule mod_rewrite.c>
        RewriteRule ^index\.php$ - [L]
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteRule . /wordpress/index.php [L]
    </IfModule> 
  4. Sao chép mã và dán vào .htaccesstập tin.

1
Tôi tìm thấy cái này ở đâu? Không có gì như thế này trong permalinks.
Boris_yo

@Boris_yo Theo như tôi biết, các quy tắc sẽ chỉ hiển thị nếu htaccesstệp của bạn có notthể ghi được .. nếu đó là wordpress sẽ chỉ tự viết nó ...
Obmerk Kronen

1
Câu trả lời này thật tuyệt vời! và sẽ không bao giờ biết về nó trừ khi sử dụng WP trong Linux. Cảm ơn rất nhiều
Mayeenul Hồi giáo

7

Lỗi này là do vô hiệu hóa mod viết lại trong tài liệu apache httpd.conf, chỉ cần bỏ ghi chú và thưởng thức permalinks thân thiện với seo


4
  • Kiểm tra xem thư mục trên .htaccess có đúng không
  • Kiểm tra các trường "siteurl" và "home" là chính xác

1
Đối với tôi, nhà là vấn đề. Tôi sửa nó và tất cả trở lại làm việc. Obrithankyou Jose Carlos.
Tiago Gouvêa

4

Chúng tôi đã có cùng một vấn đề và giải quyết nó bằng cách kiểm tra error.log của máy chủ ảo của chúng tôi. Chúng tôi tìm thấy thông báo sau:

AH00670: Tùy chọn FollowSymLinks và SymLinks IfOwnerMatch đều bị tắt, do đó, lệnh RewriteRule cũng bị cấm do khả năng tương tự để tránh các hạn chế thư mục: / srv / www / htdocs / wp-intranet /

Giải pháp là thiết lập Options AllAllowOverride Alltrong cấu hình máy chủ ảo của chúng tôi.


3

Nếu bạn có quyền truy cập FTP vào tài khoản của mình:

Đầu tiên, đăng nhập vào wp-admin của bạn và truy cập Cài đặt> Permalinks

Bạn sẽ thấy một cái gì đó ở phía dưới có nội dung:

"Nếu tệp .htaccess của bạn có thể ghi được, chúng tôi có thể thực hiện việc này một cách tự động, nhưng đó không phải là các quy tắc mod_rewrite bạn nên có trong tệp .htaccess của mình. Nhấp vào trường và nhấn CTRL + a để chọn tất cả."

Nếu điều này là đúng, hãy làm như sau:

  1. Đi vào tùy chọn cho ứng dụng khách FTP của bạn và đảm bảo các tệp ẩn được hiển thị (thay đổi tùy theo ứng dụng khách FTP của bạn) - Nếu bạn không làm điều này, bạn sẽ không thể tìm thấy tệp htaccess của mình

  2. Chuyển đến thư mục chứa các thư mục wp-admin, wp-content, wp-gồm của bạn. Kiểm tra tệp .htaccess. Nếu nó tồn tại, bỏ qua bước 4

  3. Nếu nó không tồn tại, hãy tạo một tệp trống mới trong chương trình FTP của bạn có tên .htaccess

  4. Thay đổi CHMOD cho tệp .htaccess của bạn thành 666 (tùy chọn của bạn về cách bạn muốn làm điều này)

  5. Quay trở lại trang Permalinks của bạn và chỉnh sửa cấu trúc liên kết bạn muốn. Vấn đề cần được giải quyết!

  6. Đảm bảo thay đổi chmod của tệp htaccess trở lại 644 sau khi bạn hoàn tất.

Chỉ có vấn đề tương tự và nó dường như khắc phục nó ngay lập tức! Chúc may mắn!


"mod_rewrite" đây là vấn đề, tôi quên bật nó! Cảm ơn :)
Hóa học

3

Hầu hết thời gian vấn đề này được khắc phục bằng cách truy cập trang Cài đặt -> Permalink trong quản trị viên WordPress và nhấp vào Lưu (như một số câu trả lời khác đã được chỉ ra). Khi trang này được truy cập, WordPress viết lại các chỉ thị trong .htaccesstệp giúp khắc phục vấn đề một cách kỳ diệu. Vấn đề thường xảy ra sau khi di chuyển một trang web (trang web bị hỏng vì .htaccessbị bỏ lại phía sau hoặc các cài đặt cần được cập nhật).

Nếu WordPress không có quyền để viết .htaccesstệp, một thông báo sẽ xuất hiện ở đầu trang và hướng dẫn thêm ở phía dưới khi cài đặt được lưu. Trong trường hợp này, bạn cần phải tự chỉnh sửa .htaccesstệp hoặc tốt hơn là sửa các quyền trên tệp đó. Các tập tin là ở gốc của cài đặt WordPress. cdvào thư mục và sudo chmod 644 .htaccess. Bạn cũng có thể muốn kiểm tra xem tệp có thuộc đúng nhóm không và thay đổi cần thiết với chown. Hỏi nhà cung cấp dịch vụ lưu trữ của bạn nếu bạn không biết cách thực hiện.

Nếu bạn đang ở trên chia sẻ lưu trữ đó có lẽ là tất cả những gì bạn có thể làm. Nếu bạn vẫn gặp sự cố, bạn có thể muốn nói chuyện với bộ phận hỗ trợ của nhà cung cấp dịch vụ lưu trữ. .htaccessMặt khác, đảm bảo việc sử dụng tệp được bật trên máy chủ, như @georgeos đã đề xuất. Lưu ý rằng httpd.confkhông phải lúc nào cũng được sử dụng ( Ubuntu chỉ ra rằng nó không được dùng nữa nhưng các tài liệu chính thức của Apache vẫn nói rằng nó thường là tệp cấu hình chính ). /etc/httpd/conf/httpd.conf/etc/apache2/apache2.confdường như là nơi phổ biến nhất cho tập tin này. Tìm khối cho thư mục chung, thường <Directory /var/www/>và đảm bảo rằng lệnh AllowOverrideđược đặt thành All. Nếu nó được đặt thành None, .htaccesstập tin của bạn sẽ bị máy chủ bỏ qua.



2

Bạn có thể không .htaccess không được phép trong cài đặt webhost. Đặt thành permalinks mặc định sẽ hoạt động trong trường hợp đó.


1

Trường hợp 1: - Chúng ta hãy suy nghĩ nếu di chuyển trang web từ một lưu trữ sang lưu trữ khác nếu thấy loại vấn đề này.

Giải pháp: - Đơn giản chỉ cần đi đến máy chủ cũ sao chép mã tệp .htaccess, sau đó dán vào tệp .htaccess của máy chủ mới. 99% nó tôi sẽ làm việc.


0

Tôi có cùng một vấn đề và vì vậy tôi loại bỏ Apache và làm lại và vấn đề đã được giải quyết.


0

Chỉ cần điều hướng đến Cài đặt-> Permalink trong bảng điều khiển của bạn và sau đó lưu nút Thay đổi cuối cùng. \


0

Nếu cài đặt WordPress của bạn nằm trong thư mục con (ví dụ: https://www.example.com/subfolder ), hãy thay đổi dòng này trong WordPress của bạn.htaccess

RewriteRule . /index.php [L]

đến

RewriteRule . /subfolder/index.php [L]

Bằng cách đó, bạn đang bảo máy chủ tìm kiếm WordPress index.phptrong thư mục WordPress (ví dụ: https://www.example.com/subfolder ) chứ không phải trong thư mục công cộng (ví dụ: https://www.example.com ).


0

Tôi vừa thay đổi permalink thành 'tháng và ngày' tất cả các bài đăng bằng cách ging để thiết lập> permalink.

Bây giờ tất cả các bài viết đang mở và làm việc tốt.

Một lần nữa, tôi đổi tên thành tất cả các bài viết thành permalink thực tế của nó. Nó lại hoạt động tốt.

Phương pháp này hiệu quả với tôi :-)


0

Dành cho người dùng nginx

Sử dụng các mục sau trong tệp conf của bạn cho trang web của bạn (thường /etc/nginx/sites-available/example.com)

location / { try_files $uri $uri/ /index.php?q=$uri&$args; }

Điều này xử lý tất cả các yêu cầu permalink cho index.php bằng một chuỗi URI và các đối số được cung cấp. Làm một systemctl reload nginxđể xem các thay đổi và các liên kết không phải trang chủ của bạn sẽ tải.


0

Trước khi thử thực hiện bất kỳ thay đổi cấu hình permalink hoặc máy chủ, vui lòng kiểm tra tệp .htaccess của bạn. Đây chủ yếu là một vấn đề tập tin .htaccess bị hỏng hoặc trống. Đặt lại tệp htaccess về mặc định

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

0

Sau 2 ngày dài, giải pháp là thêm options +FollowSymLinksvào đầu .htaccesstập tin của tôi .


-1

Tôi đã có vấn đề này cách đây không lâu. Tôi đã đặt lại permalink của mình thành mặc định hoặc chỉ lưu nó, cập nhật chủ đề / lõi thành (4.7.4) / plugin, hủy kích hoạt tất cả các plugin, chuyển sang chủ đề mặc định, cơ sở dữ liệu được tối ưu hóa, .htaccess đã được mặc định, đã cho phép kiểm tra tệp, mod_rewrite .

Cho đến nay không có gì hoạt động, những gì hoạt động là bài viết, trang mới, / trang liên hệ NGOẠI TRỪ cho các trang cũ.

Về cơ bản, các trang / URL không hoạt động là:

/breeding
/training
/training/*
/breeding/*

Cuối cùng, tôi tìm thấy các tập tin này trong thư mục gốc:

/breeding.php và /training.php

Tôi đã đổi tên cả hai tập tin và các trang ở trên làm việc.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.