.htaccess создает предварительный тег при проверке index.php в firefox

Создавая минималистичный MVC, мне нужен (.htaccess) для целей маршрутизации. Я использую apache и виртуальные порты.

Index.php виден, но пре-тег (не часть исходного кода html) и его пробелы заставляют страницу перемещаться вниз, как если бы сверху было поле 250 пикселей.

По какой-то причине использование (.htaccess) обертывает html-код внутри тега pre, в результате чего содержимое заголовка перемещается в область тела и добавляет пробелы между каждой строкой тегов meta / title / link.

Наблюдения:

Удаление (.htaccess) возвращает результат index.php к нормальному состоянию, а предварительный тег не виден из браузеров (просмотр исходного кода страницы), страница запускается сверху браузера, как и должно быть.

Мой index.php

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="application/content/css/main.css">
</head>
<body>

  <div class="wrapper">
    <div class="top_banner">tb</div>
    <div class="content">c</div>
    <div class="navigation">n</div>
    <div class="bottom_bar">bb</div>
  </div>

</body>
</html>

Мой файл .htaccess

RewriteEngine On
RewriteRule \.(css|js|png|jpg|gif)$ - [L]
RewriteRule ^([^/]+)/? index.php?url=$1 [L,QSA]
DirectoryIndex index.php

# Attempts to solve the problem with pre-tag.
#AddDefaultCharset UTF-8
#AddType text/html;charset=utf-8 html
#AddType text/plain;charset=iso-8859-1 txt
#AddType text/plain;charset=utf-8 text

Мой файл apache (000-default-conf):

<VirtualHost *:100>
        DocumentRoot /var/www/mvc
</VirtualHost>

<Directory /var/www/mvc/versions/>
        Options Indexes FollowSymLinks
        AllowOverride All
</Directory>

Результат HTML в браузере (просмотр страницы):

<pre>

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="application/content/css/main.css">
</head>
<body>

  <div class="wrapper">
    <div class="top_banner">tb</div>
    <div class="content">c</div>
    <div class="navigation">n</div>
    <div class="bottom_bar">bb</div>
  </div>

</body>
</html>

HTML-код инспектора firefox

<html lang="en"><head></head><body><pre>



  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
  <link rel="stylesheet" href="application/content/css/main.css">



  <div class="wrapper">
    <div class="top_banner">tb</div>
    <div class="content">c</div>
    <div class="navigation">n</div>
    <div class="bottom_bar">bb</div>
  </div>



</pre></body></html>

person Toolbox    schedule 12.05.2020    source источник


Ответы (1)


В RewriteRule путь подстановки относительный, поэтому apache пытается угадать, согласно документации Apache:

mod_rewrite пытается угадать, указали ли вы путь к файловой системе или URL-путь, проверяя, существует ли первый сегмент пути в корне файловой системы.

вам следует прочитать описание rewriteRule, возможно, у вас есть где-то файл, добавить предварительный тег.

person Lety    schedule 12.05.2020