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>

Я не совсем уверен, как решить эту проблему. Если у кого-то есть вклад, это было бы самым превосходным!

Большое спасибо за любой совет!

0 ответов

Другие вопросы по тегам