2015-04-12 64 views
1

自3小時以來,我一直在試圖解決這個奇怪的問題。我不相信。我有「RewriteRule^profile /([a-zA-Z0-9] +)profile.php?id = $ 1 [NC,L]」htaccess 我剛剛發現,如果我鍵入喜歡這個; www.sitename.com/Profile/1,www.sitename.com/profile/1,www.sitename.com/profilE/1它可以工作,但如果我輸入全部小寫字母,則不起作用。這對我沒有意義。什麼會導致這個問題?重寫規則不能全部使用

這是所有.htaccess文件;

# 0 ---- Turn Rewrite engine on 
RewriteEngine On 

# 1 ---- Rewrite for profile.php 
RewriteRule ^profile/([a-zA-Z0-9]+) profile.php?id=$1 [NC,L] 

# 2 ---- Establish a custom 404 file not found page 
ErrorDocument 404 /views/404.php 

# 3 ---- Redirect 403 forbidden to custom made 404 page 
ErrorDocument 403 /views/404.php 

# 4 ---- Prevent directory file listing in all of your folders 
Options -Indexes 

# 5 ---- Make pages render without their extension 
Options +MultiViews 

SOLUTION

如果你想刪除.PHP或.html擴展和改寫profile.php的輪廓(具有相同名稱),你必須用這種方式來刪除文件擴展名。不要使用選項+在Multiviews

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ^([^\.]+)$ $1.php [NC,L] 
+0

有人嗎?請.. – cyonder

+0

嘗試重命名您的profile.php其他名稱來調試它 – harrrrrrry

+0

zairwolf,是的我剛剛發現,這就是問題所在。我不能用同一個名字!我觀看了許多視頻,每個人都給出了相同的名字。我不明白,爲什麼我的不工作。 – cyonder

回答

1

http://httpd.apache.org/docs/2.4/content-negotiation.html

MultiViews的效果如下:如果服務器收到一個請求/一些/ DIR /富,如果/一些/目錄已使多視圖,並且/ some/dir/foo不存在,那麼服務器讀取尋找名爲foo。*的文件的目錄,並且有效地僞造一個命名所有這些文件的類型映射,爲它們分配相同的媒體類型和內容編碼如果客戶要求提供其中的一個名字,則會有這種情況。然後它會根據客戶的要求選擇最佳匹配。

+0

是的,經典;-) – Capsule