奇怪的.htaccess行为

时间:2015-08-12 15:29:21

标签: php apache .htaccess mod-rewrite

这是我的.htaccess-content:

RewriteEngine On
RewriteBase /
Options -Indexes -MultiViews

#Rewriting /profile.php?name=XY to /player/XY
RewriteRule ^player/([^/]*)$ /profile.php?name=$1 [L]

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

如果我正在浏览my-domain/player/XY,它会将我重定向到player.php?name=XY(并打印内部服务器错误,因为player.php不存在),而不是显示配置文件。

但如果我改成它 RewriteRule ^player/([^/]*)$ /profile.php?name=$1 [L]并打开my-domain/playera/XY它可以正常工作。

请帮帮我吗?

1 个答案:

答案 0 :(得分:1)

由于第一条规则应与/player/XY匹配,因此不确定您收到该错误的原因。但是你可以在你的php规则中添加一些条件,以确保 it 正确地重写:

#Remove .php file ending
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule (.*) $1.php [L]