2014-06-17 15 views
5

Được rồi vì vậy tôi vừa tạo trang đầu tiên trên trang web này. Nó hoạt động khi tôi sử dụng các thiết lập permalink mặc định.HTTP 404 với Tên bài viết permalink

Nếu tôi thay đổi các thiết lập permalink để sử dụng bài viết tên, sau đó tôi nhận được một HTTP 404.

Tôi không chắc chắn những gì đang đi sai hoặc nếu tôi đã bị phá vỡ bất cứ điều gì. Bất cứ ai có thể giúp tôi sửa chữa?

Trang web được lưu trữ trên apache.

Page exists, link is broken

Trả lời

9

Bạn đang sử dụng XAMPP hoặc MAMP? Có một vài trục trặc thường gặp với những môi trường, lấy từ WordPress Codex: Fixing Permalink Problems

Người sử dụng XAMPP (Windows): Một số phiên bản của XAMPP không cho phép mod_rewrite theo mặc định (mặc dù nó được biên dịch trong Apache). Để kích hoạt nó - và do đó cho phép WordPress ghi tệp .htaccess cần thiết để tạo liên kết khá - bạn phải mở apache/conf/httpd.conf và bỏ ghi chú dòng LoadModule rewrite_module modules/mod_rewrite.so (ví dụ: xóa dấu băm/pound ở mặt trước của dòng).

Người dùng WAMP (Windows): Một số phiên bản WAMP (tất cả các phiên bản?) Không bật mod_rewrite hoặc cho phép theo SymLinks theo mặc định. Để bật chức năng bắt buộc, hãy điều hướng đến tệp apache/conf/httpd.conf , mở bằng trình chỉnh sửa văn bản và bỏ ghi chú dòng LoadModule rewrite_module modules/mod_rewrite.so (ví dụ: xóa dấu băm/pound ở mặt trước của dòng). Sau đó, tiếp tục xuống trong cùng một tệp có một phần bắt đầu bằng dòng "Tùy chọn FollowSymlinks". Thay đổi dòng thứ hai trong phần đó từ "AllowOverride none" thành AllowOverride all. Lưu httpd.conf đã chỉnh sửa và khởi động lại tất cả các mô-đun WAMP . Permalinks của bạn bây giờ sẽ hoạt động.

Bạn cũng có thể thấy Permalinks without mod_rewrite nếu hộp cát của bạn không có sẵn mod_rewrite.

Apache

Nếu bạn đang sử dụng Apache thường có hai thủ phạm khác để phá vỡ permalinks: .htaccess không được tạo ra (vì cài đặt giấy phép) hoặc AllowOverride chỉ thị của Apache không được kích hoạt.

Trước tiên, nếu bạn SSH vào máy chủ, bạn có thấy tệp .htaccess được tạo trong thư mục gốc không? Nếu không, WordPress có thể không có quyền ghi tệp đó. Cũng có thể tệp hiện có, nhưng WordPress đó không thể chỉnh sửa nó. Trong cả hai trường hợp, bạn có thể chmod tập tin đó (và tạo ra nó nếu nó không tồn tại) để 666.

Tiếp theo, đảm bảo cấu hình Apache của bạn có các cài đặt sau:

<Directory /> 
    Options FollowSymLinks 
    AllowOverride All 
</Directory> 

Cuối cùng, đọc qua Fixing Permalink Problems phần của WordPress Codex.Có một số mẹo và gợi ý khác về lý do tại sao permalinks có thể không hoạt động.

+0

Điều này được lưu trữ trên apache – Ortund

+0

@Ortund Xin lỗi, tôi đã bỏ lỡ điều đó. Tôi cập nhật câu trả lời của tôi, hy vọng rằng sẽ giúp. –

+0

Bạn đã không bỏ lỡ nó, tôi nghĩ rằng nó đã đi mà không nói như vậy không bao gồm thông tin đó. Đã thêm nó ngay bây giờ mặc dù – Ortund

1

tìm thấy bài này trên một trang web khác đã giúp nhiều người đã

Cuối cùng tôi quản lý để giải quyết vấn đề! Giải pháp: Tôi đang sử dụng cấu trúc liên kết cố định tùy chỉnh http://kyl.fi/%category%/%postname%/. Tôi đã xóa dấu gạch chéo cuối (tức là cuối cùng /) và thì đấy. Tuy nhiên, tôi khá chắc chắn rằng tôi đã sử dụng cấu trúc permalink với dấu gạch chéo trước khi không có bất kỳ vấn đề nào, vì vậy tôi vẫn còn bối rối và sẽ quan tâm đến việc nghe thêm về vấn đề này nếu ai đó có lời giải thích.

Tất cả các liên kết cố định chuẩn đều có dấu/ở đó.

0

Trong trường hợp của tôi, tôi đang sử dụng trình duyệt web NGINX với cài đặt WordPress của tôi. Việc sửa chữa là thêm đoạn mã sau vào Chỉ thị nginx:

location/{ try_files $uri $uri/ /index.php?$args; } # Add trailing slash to */wp-admin requests. rewrite /wp-admin$ $scheme://$host$uri/ permanent; location ~* \.(jpg|jpeg|png|gif|css|js|ico)$ { expires max; log_not_found off; }

Nếu bạn đang sử dụng tuyệt vời (mã nguồn mở) ISPconfig.org CPanel thay thế, sau đó đi đến trang web của bạn, trong tab Tùy chọn , nhập đoạn mã trên cho NGINX Directives. ISPconfig có một tính năng để thêm đoạn mã phổ biến để truy cập nhanh trong tab Tùy chọn.

Sau khi thực hiện sửa chữa ở trên, tôi đã có thể sử dụng bất kỳ tùy chọn Permalinks nào của WordPress.

0

Trong trường hợp của tôi, trước hết tôi phải cập nhật các .htaccess tập tin bên trong thư mục gốc trang web của tôi:

# 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 

WordPress thực hiện điều này tự động nếu nó có quyền ghi. Nếu không nó sẽ khiếu nại nó không thể ghi vào nó, và cung cấp cho các mẫu mã trên để bạn có thể tự cập nhật các .htaccess.

Sau đó, tôi đã chỉnh sửa tệp apache2.conf. Trong Linux, nó nằm trong /etc/apache2/apache2.conf, sẽ có một phần như thế này:

<Directory /var/www/> 
    Options Indexes FollowSymLinks 
    AllowOverride None 
    Require all granted 
</Directory> 

Thay đổi AllowOverride None-AllowOverride FileInfo.

Cuối cùng, hãy thực hiện các lệnh sau:

sudo a2enmod rewrite 
service apache2 restart 

Tất cả các bước này là cần thiết để làm việc.

Các vấn đề liên quan