問題描述
我提到以前提到的這個問題,沒有適當回答:WordPress overriding actual subdirectories 和 Non “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 檔案中的指令何處下載並應用於其下的所有目錄。
如果是這樣,你可以做幾件事情之一:
-
將您的 WordPress 移動到自己的目錄。請參閱:http://codex.wordpress.org/Moving_WordPress 如果您將 WordPress 移動到其自己的目錄中,使其與伺服器目錄層次結構中的其他目錄位於同一級別,WordPress 重寫規則將不會影響其他目錄。
-
RewriteEngine Off – 這通常會工作。如果不工作,請確認您沒有使用萬用字元 DNS 設定。如果您的 DNS 設定中有萬用字元*主機名記錄指向您的 Web 伺服器,可能會導致.htaccess 和子域的破壞。
-
在您的站點根目錄中的.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 輔助翻譯的英文資料結果。如果您對結果不滿意,可以加入我們改善翻譯效果:薇曉朵技術論壇。