Không thể truy cập các thư mục con không phải wordpress khi wordpress ghi đè chúng với lỗi 404


34

Tôi đề cập đến câu hỏi này đã được hỏi trước đó và không được trả lời phù hợp: Wordpress ghi đè các thư mục con thực tế và cả các trang / mã không "Wordpress" bị lỗi 404

Tôi có cùng một vấn đề và tôi đã thử gần như mọi thứ tôi tìm thấy trên mạng. Nó chắc chắn có liên quan đến việc bật permalinks trong wordpress. Tuy nhiên, tôi đã đặt một tệp .htaccess mới trong thư mục con với:

Viết lại

và vấn đề vẫn tồn tại. Ngay cả khi tôi xóa hoàn toàn tệp .htaccess, vấn đề vẫn tồn tại.

Tôi cũng đã thử một số giải pháp được đề xuất khác như ErrorDocument 401 "Truy cập trái phép" và ErrorDocument 404 "Truy cập trái phép" và Redirect 301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html ở nhiều địa điểm khác nhau đều không có kết quả .

Ai đó có thể xin vui lòng cung cấp một giải pháp khác? Cách duy nhất tôi có thể khắc phục là tắt permalinks nhưng chúng tôi cần bật chúng.

Cảm ơn,

Nicole


Điều gì xảy ra nếu bạn đổi tên index.php thành index.bak trong thư mục gốc của WordPress? Là thư mục vẫn không thể truy cập?
Horttcore

Bạn đã thử xác định lại url cơ sở trong thư mục con .htaccess của bạn (với thư mục con này có giá trị) chưa?
Cédric G

Câu trả lời:


28

Tôi giả sử rằng bạn đặt WordPress trong root trang web của bạn và các thư mục bên ngoài cũng nằm trong root trang web của bạn. Lý do điều này xảy ra là các tệp .htaccess tuân theo một hệ thống phân cấp. Bất cứ chỉ thị nào đều nằm trong tệp .htaccess cấp cao nhất và áp dụng cho tất cả các thư mục bên dưới nó.

Nếu đây là trường hợp, bạn có thể làm một trong nhiều điều:

  1. Di chuyển WordPress của bạn vào thư mục riêng của nó. Xem: http://codex.wordpress.org/Moving_WordPress Nếu bạn di chuyển WordPress vào thư mục riêng để nó ở cùng cấp trong phân cấp thư mục máy chủ của bạn vì các thư mục khác, quy tắc viết lại WordPress có thể ảnh hưởng đến các thư mục khác.

  2. RewriteEngine Off - điều này thường sẽ hoạt động. Nếu nó không hoạt động, hãy kiểm tra xem bạn có đang sử dụng cài đặt DNS ký tự đại diện không. Nếu bạn có một bản ghi tên máy chủ * ký tự đại diện trỏ đến máy chủ web của bạn trong cài đặt DNS, nó có thể gây ra sự tàn phá với .htaccess và tên miền phụ.

  3. Trong tệp .htaccess trong thư mục gốc của trang web của bạn, hãy thêm các lệnh TRÊN sau .htaccess của WordPress:

    <IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_URI} ^/subdirectoryname1/(.*)$ [OR]
    RewriteCond %{REQUEST_URI} ^/subdirectoryname2/(.*)$ [OR]
    RewriteRule ^.*$ - [L]
    </IfModule>

Một trong số này nên làm việc cho bạn.


17

Điều này đã làm việc cho tôi trong quá khứ cho một tình huống tương tự:

Đặt cái này lên trên .htaccess

ErrorDocument 401 default

2
Cảm ơn! Tôi đã thử rất nhiều thứ, nhưng đây là giải pháp duy nhất hiệu quả cho trường hợp của tôi: thư mục con được bảo vệ bằng mật khẩu
Rado

2
Làm việc cho tôi quá, bất kỳ lời giải thích như những gì nó làm và tại sao nó hoạt động?
Asaf

Điều này làm việc cho tôi .. không sử dụng wordpress mà là OpenCart và có cùng một vấn đề. Một lời giải thích sẽ thực sự hữu ích.
billynoah

4

Khi tôi sao chép các tệp của mình vào cùng một máy chủ nhưng với thư mục thư mục con khác nhau nên khi tôi cố truy cập các trang của mình, index.php vẫn hoạt động tốt nhưng các trang khác thì không và cho tôi lỗi 404. Xin lỗi vì tiếng Anh của tôi không tốt!!

Tôi chỉ nhìn vào htaccess của tôi bản gốc:

# BẮT ĐẦU WordPress

RewriteEngine On
RewriteBase /
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
Viết lại. /index.php [L]

# KẾT THÚC WordPress

và đặt cái mới với

# BẮT ĐẦU WordPress

RewriteEngine On
RewriteBase / thư mục con
RewriteCond% {REQUEST_FILENAME}! -F
RewriteCond% {REQUEST_FILENAME}! -D
Viết lại. /subdirectoryfolder/index.php [L]

# KẾT THÚC WordPress

Xin chào @lizette. Chào mừng đến với diễn đàn WPSE. Bạn có thể muốn kiểm tra cách định dạng hoạt động ở đây.
Pothi Kalimuthu

4

Tôi thấy chủ đề này là một vài tháng tuổi, nhưng chỉ trong trường hợp bạn không bao giờ có nó để làm việc!

Tôi có một vấn đề tương tự, nhưng vấn đề của tôi là cài đặt wordpress nằm trong thư mục con ngăn chặn truy cập URL vào các thư mục trong thư mục gốc (bên ngoài thư mục cài đặt WP), nhưng chỉ khi permalinks được bật. Để giải quyết vấn đề này, tôi đã sao chép cả index.php và .htaccess (sao chép không di chuyển) từ thư mục con nơi cài đặt WP được đặt và đặt cả hai trong thư mục gốc public_html (hoặc bất kỳ thư mục con nào bạn đang cố truy cập bên ngoài cài đặt WP danh mục). Tệp .htaccess có các điều kiện ghi lại cho permalinks:

RewriteEngine On
RewriteBase /subdirectoryinstallfolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

Kích hoạt permalinks để làm mới và nó đã giải quyết tất cả các vấn đề. Đảm bảo rằng các quyền của bạn cho các thư mục gốc cũng được đặt chính xác vì điều này đã gây ra sự cố cho tôi trong quá khứ.


3

Nếu bạn vẫn nhận được 404 với htaccess bị vô hiệu hóa và bạn đã xác minh các đường dẫn và bạn biết các tệp ở đó thì các tùy chọn duy nhất còn lại của bạn là ba ...

Tùy chọn ...

  1. Máy chủ hoàn toàn có thể chạy một hệ điều hành phân biệt chữ hoa chữ thường. Điều đó có nghĩa là nếu bạn đang gõ vào một đường dẫn và không sử dụng các ký tự chính xác và vỏ nó đơn giản sẽ không hoạt động.
  2. Quyền: Bạn có thể có quyền sai trên tệp hoặc thư mục hoặc thư mục mẹ. Cố gắng thay đổi quyền thành 755 trên các tệp, thư mục và thư mục mẹ. Nếu bạn có quyền truy cập ssh (terminal) vào nó thì hãy vào root của bạn và chạy "chmod -R 755 mydir" này và điều đó sẽ đặt đệ quy các quyền cho tất cả chúng.
  3. Nếu sau đó bạn vẫn gặp sự cố thì bạn có vấn đề về cấu hình máy chủ (có lẽ là Apache). Bạn sẽ cần nói chuyện với nhà cung cấp dịch vụ lưu trữ của bạn về nó.

Nếu không có cái nào hoạt động thì bạn cần một máy chủ mới.


2

Sau khi nhổ tóc, chỉnh sửa htaccess, cuối cùng tôi cũng tìm được giải pháp hiệu quả cho WordPress.

Tôi gặp vấn đề này sau khi cài đặt tập lệnh codeiginter trên cùng thư mục gốc mà WordPress được cài đặt.

Sau khi thử tất cả các thủ thuật được liệt kê ở đây, tôi vẫn nhận được lỗi 404 trên các trang được liên kết với tập lệnh mới.

Tôi lưu ý rằng htaccess WordPress đã giám sát htaccess của tập lệnh. Tôi cũng lưu ý rằng các cài đặt WordPress khác trong cùng thư mục không có lỗi 404 này.

Tôi chỉ đơn giản chấp nhận htaccess từ cài đặt WordPress mới trong cùng thư mục máy chủ và thêm nó vào thư mục chứa tập lệnh của tôi. Đây là cách nó trông như thế nào:

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

Thay thế thư mục con bằng tên của thư mục của bạn và đặt tệp htaccess này vào thư mục chứa tập lệnh của bạn.

Ví dụ: Nếu trang web được cài đặt tại đây

public_html/

và thư mục mới được đặt

`public_html/example`

sao chép htaccess ở trên và lưu nó vào thư mục 'ví dụ' và điều này sẽ hoạt động.


1

Tôi đã xem xét các câu trả lời ở đây một số lần khi tôi gặp phải một vấn đề tương tự. Tôi có các tệp trong thư mục con sẽ gây ra lỗi 404 khi tôi cố truy cập chúng. Tất cả các công cụ .htaccess đã thất bại trong việc khắc phục nó, như Kirsten Douglas nói, Wordpress đã thực hiện công việc này.

Giải pháp của tôi

Tôi tìm thấy bài viết này sau khi kiểm tra error_log trên máy chủ. Tôi đã nhận được một tin nhắn về uid sai cho các kịch bản. Tôi cũng nhận thấy rằng 404 không bị ném vì tệp, nhưng vì máy chủ không thể phục vụ tệp 500.html tức là tôi có lỗi 500.

Hóa ra tôi đã tạo các tệp dưới dạng root và cần thay đổi quyền sở hữu thành chủ sở hữu tệp web.

Tôi hy vọng điều này sẽ giúp những người khác có cùng vấn đề!


0

Bạn có thể chỉ cần thêm một lệnh RewriteCondsẽ đảm bảo các quy tắc WordPress được bỏ qua cho các yêu cầu bên trong thư mục con của bạn.

RewriteCond %{REQUEST_URI} !^/mysubdirectory
# rest of WordPress rewrite rules

Tuy nhiên, bạn nói rằng ngay cả khi không có WordPress .htaccessbạn đang gặp vấn đề? Nội dung của thư mục con của bạn là .htaccessgì?

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.