我一直试图解决这个奇怪的问题,因为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
解
如果要删除.php或.html扩展名并将profile.php重写为配置文件(具有相同名称),则必须使用此方法删除文件扩展名。不要使用选项+多视图
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC,L]
答案 0 :(得分:1)
来自http://httpd.apache.org/docs/2.4/content-negotiation.html:
MultiViews
的效果如下:如果服务器收到/ some / dir / foo的请求,如果/ some / dir启用了MultiViews,并且/ some / dir / foo不存在,那么服务器读取名为foo。*的文件的目录,并有效地伪造一个类型映射,该映射命名所有这些文件,为它们分配相同的媒体类型和内容编码,如果客户端通过名称请求其中一个文件。然后,它会根据客户的要求选择最佳匹配。