Я хочу, чтобы получить все, вплоть до «/» и слиться с «.php»Внутренняя ошибка при файл не существует
работает отлично, но когда файл не существует, я получаю внутренняя ошибка
RewriteRule ([^\/]*) $1.php
Я хочу, чтобы получить все, вплоть до «/» и слиться с «.php»Внутренняя ошибка при файл не существует
работает отлично, но когда файл не существует, я получаю внутренняя ошибка
RewriteRule ([^\/]*) $1.php
Возможно, вы захотите проверить, что вы переписываете, чтобы существовать до выполнения перезаписи, чтобы избежать цикла (отметив, что ваш тестовый шаблон соответствует тому, что вы переписываете). Один из возможных подходов к это сделать следующее:
# Check that the file isn't a directory
RewriteCond %{REQUEST_FILENAME} !-d
# ...nor is it a file
RewriteCond %{REQUEST_FILENAME} !-f
# ...but the result of the rewrite will be
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^([^/]+) $1.php
Это также имеет (неосновной) преимущество, показывая оригинальный URL в тех случаях, когда 404 генерируется, при условии, что вы используете сообщение об ошибке акции Apache. Если бы вы переписались с несуществующим файлом PHP, сервер сказал бы, что /something.php не был найден, а не /something/, но так как переписывание не выполняется, если целевой файл не есть, вы получаете /something/.
Если вы по-прежнему получаете ошибку 500, в вашем файле .htaccess может возникнуть другое противоречивое правило. Вы также должны проверить журнал ошибок Apache для получения более подробной информации о том, что произошло с ошибкой, хотя в этом случае я подозреваю, что это превышение по внутреннему пределу перенаправления.
может обработку случаев несуществующего файла и/или каталога может помочь
RewriteCond %{REQUEST_URI} -d
RewriteCond %{REQUEST_URI} -f
Попробуйте обработки этих случаев, чтобы избежать ошибок