0

当我转到 {url}/klanten/home/ 或 {url}/klanten/logout/ 时,会出现 500 内部服务器错误。

我的 htaccess:

RewriteEngine on

RewriteRule ^klanten/([^/]+)/?$ klanten/$1.php [L,QSA,NC]

RewriteRule ^error/([^/]+)/([^/]+)/([^/]+)/([^/]+)/?$ error.php?type=$1&error=$2&file=$3&from=$4 [L,QSA,NC]

RewriteRule ^email/([^/]+)/?$ email.php?id=$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$ $1.php [L]

地图 'klanten' 存在,文件 home.php 和 logout.php 也存在。

谢谢!

4

1 回答 1

1

此规则是错误的,它会导致无限期重定向:

RewriteRule ^klanten/([^/]+)/?$ klanten/$1.php [L,QSA,NC]

/klanten/logout/将导致/klanten/logout.php其又将被一次又一次地重写。

您可以将点添加到字符类以避免这种情况,这样只有没有点的 url 会被重写:

RewriteRule ^klanten/([^/\.]+)/?$ klanten/$1.php [L,QSA,NC]

或者您只需添加现有文件和目录不会被重写的条件(显然更好的解决方案......):

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^klanten/([^/]+)/?$ klanten/$1.php [L,QSA,NC]
于 2012-09-15T22:34:43.220 回答