Строка запроса htaccess к пути не работает - PullRequest
0 голосов
/ 23 октября 2018

У меня есть это: http://example.com/TEST/user/ticket.php?id=1

Я хочу это: http://example.com/TEST/user/ticket/1

Это мой .htaccess файл:

Options -Multiviews
RewriteEngine On
RewriteBase /TEST/user/
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^(.*)$  $1.php [NC,L]

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

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /ticket\.php\?id=([^\&\ ]+)
RewriteRule ^/?ticket\.php$ /ticket/%1? [L,R=301]

Что не так?

.php расширение правильно скрыто, но вместо этого строка запроса не «конвертируется» в путь.Это дает мне:

500 внутренняя ошибка сервера

1 Ответ

0 голосов
/ 23 октября 2018

Журналы сервера должны указывать причину ошибки.

Одна из проблем заключается в том, что в последней строке вы используете шаблон, который соответствует просто ticket.php, а не ticket.php?id=

* 1006.*

Попробуйте

RewriteRule ^/?ticket\.php?id=([^\&\ ]+).*$ /ticket/$1? [L,R=301]

RewriteCond не должно быть необходимым.

...