Nginx
mod_speling 不區分大小寫的 URL 不起作用
我有一個 ServerPilot 伺服器,在 Ubuntu 16.04.3 上執行
它上面是一個應用程序,它是一個 Wordpress 網站,但有其他非 wordpress 目錄。在這些目錄中是我所關心的。
我已經驗證了 mod_speling 確實在伺服器上啟用了……但是,當我輸入
CheckCaseOnly on CheckSpelling on
對於我的應用程序 .htaccess 文件,不區分大小寫的 URL 仍然解析為 Wordpress 404,而不是實際解析。
不幸的是,該站點處於測試/QA 階段,因此我無法給出實際的 URL,但是,例如:
https://www.example.com/university/Smartapp/External/index.html可以正確解析,因為在應用程序中,該路徑正是如此,大寫的 S 和大寫的 E ……但是…… URL https ://www.example.com/university/smartapp/external/index.html拋出 Wordpress 404 Page Not Found
我該怎麼做才能讓它工作?
編輯如此接近……我認為正在發生的是Wordpress首先處理。
所以……我實現了以下內容:
CheckCaseOnly On CheckSpelling On <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/university/(.*)$ [OR] RewriteCond %{REQUEST_URI} ^/events/(.*)$ [OR] RewriteCond %{REQUEST_URI} ^/Videos/(.*)$ [OR] RewriteCond %{REQUEST_URI} ^/2017-holiday-card/(.*)$ [OR] RewriteCond %{REQUEST_URI} ^/Holiday-Card/(.*)$ [OR] RewriteRule ^.*$ - [L] </IfModule> # BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] # add a trailing slash to /wp-admin RewriteRule ^([_0-9a-zA-Z-]+/)?wp-admin$ $1wp-admin/ [R=301,L] RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_FILENAME} -d RewriteRule ^ - [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(wp-(content|admin|includes).*) $2 [L] RewriteRule ^([_0-9a-zA-Z-]+/)?(.*\.php)$ $2 [L] RewriteRule . index.php [L] # END WordPress
ServerPilot 應用程序的預設 nginx 配置是:
location / { proxy_pass $backend_protocol://$backend_host:$backend_port; }
我想做類似的事情:
location ~* ^/university/ { proxy_pass $backend_protocol://$backend_host:$backend_port; }
但它似乎也沒有做任何事情……
其中,確實允許不區分大小寫的 URL 工作……但是,它確實破壞了 Wordpress 的永久連結,因為 wordpress 側的所有內頁現在都是 404
ServerPilot processes requests as such: Web Browser -> Nginx -> Apache -> PHP-FPM, please leave the nginx tag on the question since it is relative to it.
最終不得不放棄 .htaccess 才能正常工作
訣竅是添加什麼:
<DirectoryMatch "(^|/)university($|/)"> CheckCaseOnly On CheckSpelling On RewriteEngine On RewriteBase / RewriteCond %{REQUEST_URI} ^/university/(.*)$ [OR] RewriteRule ^.*$ - [L] </DirectoryMatch>
到應用程序的虛擬主機配置