[英]The requested URL was not found on this server .htacess
我正在嘗試重寫 URL,例如:
example.com/speciality_details.php?id=23&name=ent
到
example.com/specialities/23/ent
但我收到此錯誤:
Not Found
The requested URL was not found on this server.
此外,在嘗試使用 ErrorDocument 處理請求時遇到了 404 Not Found 錯誤。
這是我的.htaccess
文件
RewriteEngine on
RewriteRule ^doctor/([0-9]+)/([^/.]+)$ doctor_details.php?id=$1&name=$2 [NC,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^/specialities/([0-9]+)/([^/.]+)$ speciality_details.php?id=$1&name=$2 [NC,L]
第一個RewriteRule
工作但第二個不工作
請幫助我知道問題是什么。 我應該如何重寫代碼?
RewriteCond %{REQUEST_FILENAME}.-f RewriteRule ^/specialities/([0-9]+)/([^/.]+)$ speciality_details?php,id=$1&name=$2 [NC,L]
與第一條規則一樣,您不應匹配 URL 路徑上的斜杠前綴。 並且前面的條件( RewriteCond
指令)是多余的,因為/specialities/23/ent
形式的 URL 不可能匹配物理文件(可以嗎?)。
在.htaccess
中,與RewriteRule
模式匹配的 URL 路徑不以斜杠開頭,因為目錄前綴(總是以斜杠結尾)已被刪除。
因此,規則應該如下所示(並且沒有RewriteCond
指令):
RewriteRule ^specialities/([0-9]+)/([^/.]+)$ speciality_details.php?id=$1&name=$2 [NC,L]
根據您的示例,這將匹配example.com/specialities/23/ent
形式的 URL。 並假設要重寫的文件是文檔根目錄中的speciality_details.php
。
NC
( nocase
) 標志也應該是多余的,除非你期待sPeCiAlItIeS
的大小寫混合版本? 但是,如果您是,那么通過重定向可以更好地解決這個問題,因為重寫可能會導致重復內容 (SEO) 問題。
確保在測試之前清除瀏覽器緩存。
雖然,從你之前的問題編輯來看,你似乎已經在沒有斜杠前綴的情況下嘗試過這個,但當時你有/speciality/23/ent
,而不是/specialities/23/ent
作為示例請求 URL - 這顯然不會比賽。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.