Назад | Перейти на главную страницу

Псевдоним виртуального хоста 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, он работает нормально, но, очевидно, я хочу, чтобы расширение исчезло.

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

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

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

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

Спасибо!

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

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

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