2015-08-12 5 views
0

это мой .htaccess-содержание:Weird поведения .htaccess

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

Не знаете, почему вы получаете эту ошибку, поскольку первое правило должно соответствовать /player/XY. Но вы, вероятно, может добавить несколько условий для вашего правила PHP, чтобы гарантировать, что это правильно переписывания:

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

Это исправлена ​​ошибка внутреннего сервера, когда я просматриваю к моему-домен/игрока/XY (который перенаправляет к игроку .php? name = XY) -> теперь он показывает страницу 404 – Kombustor

+0

@Kombustor Почему она перенаправляется на '/player.php? name = XY'? У вас есть внутренняя перезапись, которая переписывает ее в '/profile.php? Name = XY'. –

Смежные вопросы