Я запускаю несколько личных веб-сайтов с 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 веб-сайта?Я не совсем уверен.
Спасибо за любой совет