Назад | Перейти на главную страницу

При перезаписи / последней версии возникает ошибка сервера

Итак, я работаю над сайтом для журнала, и мне нужен URL /latest переписать в файл latest.php. Я работаю на сервере хостинга cPanel, поэтому я поставил .htaccess в /public_html каталог вроде этого (важная строка - 8-я):

RewriteEngine On
RewriteRule ^archives/search/?$ /archives/search.php [L]
RewriteRule ^archives/([\d]{4})-([\d]{1})/?$ /archives/download.php?year=$1&issue=$2
RewriteRule ^archives/([\d]{4})/?$ /archives/download.php?year=$1
RewriteRule ^archives - [L]
RewriteRule ^admin - [L]
RewriteRule ^search - [L]
RewriteRule ^latest /latest.php [L]
RewriteRule ^contact/?$ /contact.php [L]
RewriteRule ^([a-z]+)/?$ /page.php?p=$1 [L]

ErrorDocument 404 /notfound.php
ErrorDocument 500 /dberror.php

Однако при переходе к /latest, Я получаю 500 interal server error. Сначала я думал, что проблема в .php файл, но это было исключено, когда я полностью очистил файл latest.php, и ошибка не исчезла. Интересно, что когда я меняю /latest к чему-нибудь еще и перейдите к этому, он работает. Понятия не имею почему. Я хотел бы дать ссылку на полный сайт, но он все еще находится в разработке, поэтому мне не разрешено.

Ваше правило перезаписи может быть бессмысленным для сервера:

RewriteRule ^latest /latest.php [L]

Означает "если кто-то хочет получить доступ к чему-то, что начинается с "latest"затем иди в"/latest.php".

Итак, сценарий таков: вы пытаетесь получить доступ к "latest", который перенаправлен на"/latest.php" затем "/latest.php"перенаправлен на"/latest.php"и так далее. Переходит в бесконечный цикл перенаправления = 500 internal server error.

Это правило может быть более подходящим:

RewriteRule ^latest(/|)$ /latest.php [L]

Что означает: если есть URL latest или lastest/ затем перейдите к /latest.php

Кстати, я бы предложил добавить нечувствительность к регистру = NC и добавить строку запроса QSA к вашему rewriterule, это закончится примерно так:

RewriteRule ^latest(/|)$ /latest.php [QSA,NC,L]

Может это правило такое же, я не тестировал:

RewriteRule ^latest/?$ /latest.php [QSA,NC,L]