Как разрешить объявлениям маршрутов загружать представления в отдельном файле в Apache2?

Мой сайт с моей собственной платформой PHP позволяет иметь хорошие URL для страниц:

About Us  =>  https://www.myurl.com/about
Contacts  =>  https://www.myurl.com/contacts

Это работает хорошо в Бродячей локальной установке, но после того как я загружаю свой сайт на Apache2, идущий в те броски сайтов:

Требуемый URL / о не был найден на этом сервере

Требуемый URL / контакты не был найден на этом сервере.

Вероятно, потому что это - приоритет, должен искать файл в "приблизительно" и "связывается", папки вместо слушают /index.php файл, который определяет маршруты и представления загрузок для приблизительно или страницы контакта.

Представление в https://www.myurl.com домашняя страница работает отлично, проблема происходит, идя в страницы, объявленные в URI после https://www.myurl.com/.....

Это - мой .conf файл

ServerAdmin info@myurl.com
ServerName myurl.com
ServerAlias www.myurl.com
DocumentRoot /var/www/myurl.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
RewriteCond %{SERVER_NAME} =www.myurl.com [OR]
RewriteCond %{SERVER_NAME} =myurl.com
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI}      [END,NE,R=permanent]
1
задан 7 September 2017 в 12:08

2 ответа

После добавления этих строк в мой .htaccess файл наконец работала маршрутизация:

Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Прежде, когда я шел в https://www.myurl.com/about, это искало index.php файл в /var/www/myurl.com/public_html/about/ каталог.

С новым кодом в .htaccess, когда я перехожу в https://www.myurl.com/about, .htaccess файл сначала располагает по приоритетам поиск представления, поскольку это определяется в index.php файл и если это не загружает представления, это ищет каталог с именем.

1
ответ дан 7 December 2019 в 13:30

У меня нет точной идеи, почему вышеупомянутая конфигурация работает над Бродягой, но не над собственным Apache. Мой опыт показывает мне, что, когда конфигурация Apache не достаточно строга, она работает иногда, и иногда она не работает. Особенно, когда Вы мигрировали от одного до версии другого Apache. Также несколько раз я читал, что желательно избегать использования, Переписывают правила, если это возможно.

Таким образом, я предпочел бы устанавливать свой виртуальный хост с отдельным конфигурационным файлом, который должен быть похожим на это:

ServerName myurl.com # Remove this line if there is another ServerName directive at the global level, or change it to 'ServerName localhost' if you want.

<VirtualHost *:80>  
        ServerName myurl.com
        ServerAlias www.myurl.com
        ServerAdmin info@myurl.com
        ErrorLog ${APACHE_LOG_DIR}/myurl.com.error.log
        CustomLog ${APACHE_LOG_DIR}/myurl.com.access.log combined   

        # Redirect Requests to HTTPS
        Redirect permanent "/" "https://myurl.com/"
</VirtualHost>

<IfModule mod_ssl.c>    
<VirtualHost _default_:443>
        ServerName myurl.com
        ServerAlias www.myurl.com
        ServerAdmin info@myurl.com
        ErrorLog ${APACHE_LOG_DIR}/myurl.com.error.log
        CustomLog ${APACHE_LOG_DIR}/myurl.com.access.log combined   

        DocumentRoot /var/www/myurl.com/public_html
        <Directory /var/www/myurl.com/public_html>
               Options None FollowSymLinks
               AllowOverride None 
               # Use 'AllowOverride All' to enable all .htaccess overrides
               DirectoryIndex index.html index.php
               Order allow,deny
               Allow from all
               Require all granted
        </Directory>

        SSLEngine on
        SSLCertificateFile /path/to/your/cert.file
        SSLCertificateKeyFile /path/to/your/privkey.file
        SSLCertificateChainFile /path/to/your/chain.file
</VirtualHost>
</IfModule>

Создайте новый конфигурационный файл: /etc/apache2/sites-available/myurl.com.conf. Где необходимо вставить и изменить вышеупомянутые строки.

Отключите текущий конфигурационный файл. Вероятно, необходимо использовать a2dissite. Затем включите новый конфигурационный файл: sudo a2ensite myurl.com.conf. И Apache перезапуска. Я думаю, что это должно работать теперь.

Кроме того, в вышеупомянутом стенде конфигураций http://myurl.com и http://www.myurl.com перенаправит все запросы к https://myurl.com. Однако адрес https://www.myurl.com будет доступно, когда это будут требовать. Если Вы хотите перенаправления как их:

  • http://myurl.com кому: https://myurl.com и

  • http://www.myurl.com кому: https://www.myurl.com.

Необходимо удалить директиву ServerAlias от <VirtualHost *:80> определение и создает другой:

<VirtualHost *:80>  
        ServerName myurl.com
        ...
        Redirect permanent "/" "https://myurl.com/"
</VirtualHost>

<VirtualHost *:80>  
        ServerName www.myurl.com
        ...
        Redirect permanent "/" "https://www.myurl.com/"
</VirtualHost>

...
1
ответ дан 7 December 2019 в 13:30

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

Похожие вопросы: