問題描述

我提到以前提到的這個問題,沒有適當回答:WordPress overriding actual subdirectoriesNon “WordPress” pages/code getting 404 error

我有同樣的問題,我已經嘗試了幾乎在網上發現的一切。這絕對有關於在 wordpress 中開啟固定連結。但是,我已經在子目錄中新增了一個新的.htaccess 檔案:

重寫引擎關閉

問題依然存在。即使我完全刪除了 wordpress .htaccess 檔案,問題仍然存在。

我也嘗試過一些其他建議的解決方案,例如在不同位置的 ErrorDocument 401 “Unauthorized access” 和 ErrorDocument 404 “Unauthorized access” 和 Redirect 301 / mysubdirectory http://www.mydomain.com/mysubdirectory/index.html 都無效。

有人可以提供另一種解決方案嗎?我可以解決這個問題的唯一方法是關閉永久連結,但是我們需要它們。

謝謝,

妮可

最佳解決方案

我假設您將 WordPress 放在您的站點根目錄中,外部目錄也位於您的站點根目錄中。原因在於.htaccess 檔案遵循層次結構。無論 top-level .htaccess 檔案中的指令何處下載並應用於其下的所有目錄。

如果是這樣,你可以做幾件事情之一:

  1. 將您的 WordPress 移動到自己的目錄。請參閱:http://codex.wordpress.org/Moving_WordPress 如果您將 WordPress 移動到其自己的目錄中,使其與伺服器目錄層次結構中的其他目錄位於同一級別,WordPress 重寫規則將不會影響其他目錄。

  2. RewriteEngine Off – 這通常會工作。如果不工作,請確認您沒有使用萬用字元 DNS 設定。如果您的 DNS 設定中有萬用字元*主機名記錄指向您的 Web 伺服器,可能會導致.htaccess 和子域的破壞。

  3. 在您的站點根目錄中的.htaccess 檔案中,新增以下的 WordPress .htaccess 指令:

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

其中一個應該適合你。

次佳解決方案

這對我來說有一個類似的情況:

將其放在.htaccess 的頂部

ErrorDocument 401 default

第三種解決方案

當我將我的檔案複製到同一個伺服器但使用不同的子目錄資料夾,所以當我試圖訪問我的頁面,index.php 工作正常,但其他頁面不是,並給我一個 404 錯誤。對不起,我的英語不好!!

我只是看看我的 htaccess 原來的:


# BEGIN WordPress

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

# END WordPress

並把新的


# BEGIN WordPress

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

# END WordPress

第四種方案

我看到這個執行緒是幾個月大,但是為了防止你永遠不會工作!

我有一個類似的問題,但是我的問題是 wordpress 安裝位於子目錄中,阻止了 URL 訪問根目錄中的資料夾 (WP 安裝目錄外),但只有當啟用了固定連結時。為瞭解決這個問題,我從 WP 安裝所在的子目錄中複製了 index.php 和.htaccess(複製不移動),並將它們放在根 public_html(或者您嘗試在 WP 安裝之外訪問的任何子目錄) 目錄) 。 .htaccess 檔案已經有固定連結的重寫條件:

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

啟用固定連結重新整理,並解決所有問題。確保您的根資料夾的許可權設定正確,因為這使我過去的問題。

參考文獻

注:本文內容整合自 Google/Baidu/Bing 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。