Псевдоним виртуального хоста Apache: внутренние перезаписываемые страницы не работают

У меня есть эта конфигурация для моего site.com

<VirtualHost *:443>
    ServerAdmin webmaster@site.com
    ServerName site.com
    ServerAlias www.site.com
    DocumentRoot /websites/site.com

    Alias /project "/websites/site.com/project/public"

    <Directory "/websites/site.com/project/public">
        Options FollowSymLinks
        AllowOverride All
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog /projects/logs/errors/site.com.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

</VirtualHost>

Мне нужно чтобы иметь возможность делать следующее:

  1. Когда я перехожу на site.com , обслуживаю содержимое DocumentRoot /websites/site.com - Проверяйте
  2. Когда я перехожу на site.com/project , обслуживаю содержимое /websites/site.com/project/public - Проверяйте
  3. Когда я перехожу на site.com/project/page , обслуживать содержимое /websites/site.com/project/public/page.php - Не работает (страница не найдена)

Вот .htaccess в /websites/site.com/project/public

Options +FollowSymLinks -MultiViews
RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+?)/?$ $1.php [NC,L]

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteCond %{THE_REQUEST} ^(.+)\.php([#?][^\ ]*)?\ HTTP/
RewriteRule ^(.+)\.php$ /$1 [R=301,L]

# Block access to hidden files and directories.
RewriteCond %{SCRIPT_FILENAME} -d [OR]
RewriteCond %{SCRIPT_FILENAME} -f
RewriteRule "(^|/)\." - [F]

Кроме того, если я перейду на site.com/project/page.php , он будет работать нормально, но, очевидно, я хочу, чтобы расширение исчезло.

Все работает нормально, если я переместил все файлы из директории public y в /websites/site.com/project/public , и поместите их только в /websites/site.com/project , но я не хочу этого делать, потому что я хочу, чтобы весь мой код находился за пределами корня веб-сайта.

Проблема в том, что мне нужно показать проект в Интернете, и поскольку у меня еще нет домена для него, мне нужно поместить его в подкаталог существующего домена.

Я знаю, что есть проблема с Псевдонимом в конфигурации виртуального хоста и, возможно, с .htaccess , но я не могу понять что.

Любая помощь приветствуется,

Спасибо!

1
задан 13 August 2020 в 14:15
1 ответ

Мне удалось решить эту проблему, переместив /websites/site.com/project в /websites/project, фактически переместив весь веб-сайт из подкаталог site.com.

Затем в файле конфигурации я заменил все пути, чтобы они указывали на это новое место, и все просто заработало.

Не могу сказать, что полностью понимаю почему.

1
ответ дан 13 August 2020 в 11:40

Теги

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