apache .conf file 404 error и загружен неправильный файл
Я запускаю несколько личных веб-сайтов с VPS-сервера ubuntu 16.04 и пытаюсь изменить каждый сайт, чтобы в качестве суффикса к веб-сайту и "www" не отображался ".html". не будет отображаться в качестве префикса. Я бы хотел, чтобы сайт работал, если кто-то введет эти модификаторы и по адресу. Пока что удаление www. и.html работает хорошо, но ни одна из моих отдельных страниц в настоящее время не загружается. Например, example.com/projects - это вкладка на моей панели навигации в индексе example.com. Если я щелкну вкладку, в адресной строке отобразится example.com/projects и "404 not found" с "Запрошенный URL / проекты не найдены на этом сервере". Независимо от того, если я изменяю проекты на href = "projects.html" или href = "projects" в главном файле index.html, ничего не загружается, и я получаю 404. Я думаю, что может быть что-то не так с тем, как каталог вводится в файл.conf Следует пытаться загрузить "проекты", а не "/ проекты"
Что я пробовал:
- измените.html на.html в правилах перезаписи. Я думаю, что \ необходимо, хотя
- перезапустите apache после сохранения каждой модификации.conf
- прочитайте на сайте apache для mod_rewrite
- Я ссылался на это: https://stackoverflow.com/questions/55079746/mod-rewrite-to-remove-html-from-address-bar-without-changing-links-in-the-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]
</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>
RewriteEngine on
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]
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>
Я не совсем уверен, как решить эту проблему. Если у кого-то есть вклад, это было бы самым превосходным!
Большое спасибо за любой совет!