我有 htaccess:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pages/$1 [L]
它將 /pages/ 從 url 中洗掉到頁面
但是當我打開最后沒有斜杠的鏈接時:
site.com/contacts
它被重定向到
site.com/pages/contacts/
有沒有辦法來解決這個問題?
我嘗試了不同的結果,通常其他選項會導致重定向到 site.com/index.php(site.com/pages/index.php)
uj5u.com熱心網友回復:
發生這種情況是因為它pages/contacts是一個目錄,并且 Apachemod_dir模塊在對目錄的請求后添加了一個斜杠。
/您可以在重寫之前檢查目錄是否存在并通過規則添加尾隨pages/:
RewriteEngine On
# add a trailing slash if pages/$1 is a directory
RewriteCond %{DOCUMENT_ROOT}/pages/$1 -d
RewriteRule ^(.*?[^/])$ %{REQUEST_URI}/ [L,R=301,NE]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /pages/$1 [L]
確保使用其他瀏覽器或從瀏覽器中洗掉快取資料以測驗此規則以避免舊快取。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/530667.html
上一篇:不是介面型別的泛型型別
下一篇:如何使用條件邏輯定義主鏈接
