Проблема файла apache .conf: Попытка удалить .html из адресной строки - PullRequest
0 голосов
/ 20 апреля 2019

Я запускаю несколько личных веб-сайтов с VPS-сервера ubuntu 16.04 и пытаюсь изменить каждый сайт так, чтобы никакой ".html" не отображался как суффикс к веб-сайту и этому www.не будет отображаться в качестве префикса.Я бы хотел, чтобы сайт работал, если кто-то введет эти модификаторы и по адресу.Пока что www.функциональность работает хорошо, но я не могу заставить работать суффикс .html так, как мне хотелось бы.

Что я пробовал:

  • изменить каждый файл .conf в apache2 /sites-available / с дополнительными командами mod_rewrite
  • перезапустите apache после сохранения каждой модификации .conf
  • для чтения на сайте apache для mod_rewrite
  • Я ссылался на это: mod_rewriteудалить .html из адресной строки без изменения ссылок в html-файле
  • Я не пытался включить .htaccess, потому что .htacess по умолчанию отключен в Ubuntu 16.04.Также не рекомендуется использовать apache, поэтому я прислушиваюсь к их словам.

Вот мой пример кода:

<VirtualHost *:80>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/example.com

    <Directory /var/www/example.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
    RewriteEngine on
    RewriteCond %{SERVER_NAME} =www.example.com [OR]
    RewriteCond %{SERVER_NAME} =example.com
    RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]

    RewriteCond %{THE_REQUEST} \s/+(.*)\.html[\s?/] [NC]
    RewriteRule ^  /%1 [R=301,L,NE]
    RewriteCond %{REQUEST_FILENAME}   !-f 
    RewriteCond %{REQUEST_FILENAME}\.html -f
    RewriteRule ^(.*)$ /$1.html [L]
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com
    ServerAlias www.example.com
    ServerAdmin admin@example.com
    DocumentRoot /var/www/example.com

    <Directory /var/www/example.com>
        Options -Indexes +FollowSymLinks
        AllowOverride All
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined
    Include /etc/letsencrypt/options-ssl-apache.conf
    SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
</VirtualHost>

Даже с указанным выше файлом .conf все, что происходит, это то, что веб-сайт продолжает показывать .html, а когда удаляется .html, он дает мне 404. Возможно ли, чтоЯ запускаю слишком много команд перезаписи?Нужно ли объединять их для работы?Нужно ли помещать их в другой <directory>, чтобы он работал?Они должны идти в главном файле apache2.conf вместо каждого файла .conf веб-сайта?Я не совсем уверен.

Спасибо за любой совет

...