簡體   English   中英

在此服務器上找不到請求的 URL。htacess

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM