Dot-Htaccess

將所有 url 重定向到根目錄,除了 /wp-admin 和 wp-json

  • May 31, 2017

我嘗試將所有 url 重定向到根目錄,除了 wordpress 管理和 wordpress REST API。

我有這些規則.htaccess

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin.*
RewriteCond %{REQUEST_URI} !^/wp-json.*
RewriteRule ^.*$ / [L,R=301]
</IfModule>

/wp-json對於出現 404 錯誤的路由,它非常適合所有重定向。

另外,我的 apache 日誌文件中有這些錯誤類型: File does not exist: [...]/dmjob/wp-json, referer: http://dmjob.dev:8888/

你能幫我麼 ?非常感謝 !:)

您似乎已經破壞/wp-admin了 WordPress 前端控制器,因此對和的任何請求/wp-json都不會被正確路由(因此您看到的是 404)。

您應該保留 WP 指令的原樣,但在文件開頭實施額外的重定向。例如:

# Redirect all requests for non-existent files and those not for wp-admin or wp-json
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/wp-admin
RewriteCond %{REQUEST_URI} !^/wp-json
RewriteRule ^ / [R=301,L]

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

/wp-admin請注意,與您的原始程式碼一樣,僅在請求不存在的文件時才會重定向請求,即使該文件位於/wp-jsonURL 空間之外。(大概這是必需的,以便 CSS、JS、圖像和任何其他靜態資源仍然可以正確提供。)

引用自:https://serverfault.com/questions/853179