@ni4evova

Почему не работают внутренние ссылки на сайте в Open Server? .htaccess?

Привет, ребята! Попросили внести изменения в простой сайт, по сути на HTML/CSS, но с элементами PHP - поэтому для локальной работы поставил Open Server. Разобрался до этапа, что сайт открывается.

Но кликаю на внутреннюю ссылку, например "Контакты" = 'contacts' – получаю ошибку 403. В логе отладки Apache вижу следующее:

applying pattern '.*\\.php$' to uri 'contacts', referer: http://stretto.loc/
RewriteCond: input='D:/OpenServer/domains/stretto.loc/public_html/contacts.php' pattern='-f' => matched, referer: http://stretto.loc/
rewrite 'contacts' -> 'D:/OpenServer/domains/stretto.loc/public_html/contacts.php', referer: http://stretto.loc/
add per-dir prefix: D:/OpenServer/domains/stretto.loc/public_html/contacts.php -> D:/OpenServer/domains/stretto.loc/public_html/D:/OpenServer/domains/stretto.loc/public_html/contacts.php, referer: http://stretto.loc/
strip document_root prefix: D:/OpenServer/domains/stretto.loc/public_html/D:/OpenServer/domains/stretto.loc/public_html/contacts.php -> /D:/OpenServer/domains/stretto.loc/public_html/contacts.php, referer: http://stretto.loc/
internal redirect with /D:/OpenServer/domains/stretto.loc/public_html/contacts.php [INTERNAL REDIRECT], referer: http://stretto.loc/
(20023)The given path was above the root path: [client 127.0.0.1:62943] AH00127: Cannot map GET /contacts HTTP/1.1 to file, referer: http://stretto.loc/


По последним двум строкам понимаю, что кажется там лишний "/" в начале. А также строки 4 и 5 делают лишнее – сначала лишний раз добавляя к файлу путь, а потом убирая, видимо оставляя "/".

Вот .htaccess:

adddefaultcharset utf-8

RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]


Этот синтаксис тёмный лес для меня (и Open Server я поставил впервые)...

Что мне нужно поменять в .htaccess или, может, в настройках сервера, чтобы ссылки правильно отрабатывались?

Заранее спасибо!
  • Вопрос задан
  • 681 просмотр
Решения вопроса 1
@dodo512
Нужно в RewriteRule поменять REQUEST_FILENAME на REQUEST_URI.
RewriteEngine On
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_URI}.php [QSA,L]
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы