我在使用.htaccess文件时遇到问题。我已经创建了文件并进行了设置,因此我不必在URL中键入文件扩展名。不幸的是,这造成了一个新问题。我曾经能够键入localhost / project,它会显示index.php。但是现在如果我键入localhost / project它会显示服务器错误500.有谁知道如何解决这个错误?
.htaccess文件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^/]+)/$ $1.php
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
答案 0 :(得分:1)
您还需要使用请求文件检查!-d
,也可以添加所有正确的条件:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/$ $1.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/$ /$1/$2.php [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule (.*)$ /$1/ [R=301,L]
问题是/project
是一个目录,mod_dir会自动将其重定向到/project/
,并且与第一个规则匹配,因此转为/project.php
,而不是{{1}}。 ta文件。