Nano Hash - криптовалюты, майнинг, программирование

URL-адрес перенаправления с .htaccess в подкаталог

Я запускаю веб-сайт и сервер CakePHP на одном и том же сервисе. CakePHP находится в подкаталоге. Я хочу, чтобы URL-адрес http://www.example.com указывал на мой index.html в корне и http://www.example.com/app для перенаправления на корневой каталог CakePHP.

Это мои текущие файлы .htaccess

В var/www/html:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule  ^$    app/webroot/  [L]
    RewriteRule  (.*)  app/webroot/$1  [L]
</IfModule>

В вар/www/html/приложение:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule ^$ /webroot/ [L]
    RewriteRule (.*) /webroot/$1 [L]
</IfModule>

В var/www/html/app/webroot:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

Изменить

Вопрос в том, как мне настроить htaccess, чтобы я мог получить доступ к своему веб-сайту CakePHP с URL-адресом http://www.example.com/app, но в индексе var/www/html, если я использую URL-адрес http://www.example.com. С моим текущим htaccess он перенаправляет оба URL-адреса на веб-сайт CakePHP.

Спасибо


  • Я немного запутался, какой у вас вопрос? 17.04.2016
  • Извините за неясность. Вопрос в том, как мне настроить свой htaccess, чтобы я мог получить доступ к своему веб-сайту CakePHP с URL-адресом example.com/ app, но в индексе var/www/html, если я использую URL-адрес example.com. С моим текущим htaccess он перенаправляет оба URL-адреса на веб-сайт CakePHP. 17.04.2016
  • В каком каталоге находится ваш корень CakePHP? 17.04.2016
  • CakePHP находится в папке приложения в /var/www/html. Там также есть index.html. 17.04.2016
  • То, как вы это описали, очень сбивает с толку - неясно (и да, я прочитал вопрос), поместили ли вы свое приложение в корень домена (/var/www/html) или во вложенную папку (так что, например, /var/www/html/app/app/webroot существует). Ненормально, чтобы приложение было в URL-адресе. Также неясно, какую версию CakePHP вы используете, поскольку она не соответствует 3.x. Я могу предположить, что вы используете 2.x, но мне не нужно гадать. Пожалуйста, уточните свой вопрос. 18.04.2016

Ответы:


1

Ответ: https://stackoverflow.com/a/33018144/1127933

Структура ваших папок:

/var/www/html/
  .htaccess <----- edit
  index.html
  app/ <------ cakephp
    bin/
    config/
    src/
    ...

Внутри var/www/html добавить файл .htaccess

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteRule    ^app$    app/    [L]
    RewriteRule    ^app/(.*) app/$1    [L]
</IfModule>
17.04.2016
  • Я попытался выполнить шаги, указанные в ссылке, и изменить файл var/www/html, но все равно получил ошибку 404: запрошенный URL-адрес /webroot/ не найден на этом сервере. 18.04.2016
  • Скорее всего, они не используют 3.x, и в этом случае файл, который вы предлагаете отредактировать, является частью стандартной установки. Не рекомендуется (если это так) предлагать редактировать корневой файл .htaccess. 18.04.2016
  • Спасибо за ваши ответы. Кажется, что-то не так с моей настройкой CakePHP. Я заработал, переустановив CakePHP и удалив .htaccess в /var/www/html. 18.04.2016

  • 2

    У вас есть root-доступ к конфигурации apache?

    Я предполагаю, что ваше приложение для торта — не единственное, что вы хотите запустить в этом домене, поэтому вы хотите настроить его как псевдоним на /app?

    Я рекомендую сначала настроить /app как псевдоним в конфигурации apache.

    Я больше знаком с этим в Ubuntu 14.04 (мой пример относится к Ubuntu), но концепция будет аналогична другим дистрибутивам Linux.

    Включите мод псевдонима:

    sudo a2enmod alias
    

    используя nano или другой любимый текстовый редактор, вам нужно добавить файл в конфигурацию apache:

    sudo touch /etc/apache2/sites-available/mycakeapp.alias.conf
    sudo nano /etc/apache2/sites-available/mycakeapp.alias.conf
    

    Для содержимого файла:

    Alias /app "/var/www/html/app/webroot"
    <Directory "var/www/html/app/webroot">
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>
    

    Включите файл конфигурации, чтобы Apache знал, что его нужно загрузить:

    cd /etc/apache2/sites-available
    sudo a2ensite mycakeapp.alias.conf
    

    Перезапустите apache, чтобы загрузить новую конфигурацию:

    sudo service apache2 restart
    

    потом перепиши базу в свой .htaccess файл в /app/webroot

    <IfModule mod_rewrite.c>
        RewriteEngine On
        RewriteBase /app
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteRule ^ index.php [L]
    </IfModule>
    

    Сделанный. http://www.example.com/app теперь будет указывать и действовать как базовый каталог ваших приложений.

    другие файлы .htacess /.htaccess и /app/.htaccess можно удалить, так как они никогда не будут затронуты. Не обязательно указывать виртуальный хост прямо на веб-корень, но это лучше, поскольку это не позволит пользователям получать доступ или просматривать другие папки в каталоге приложения.

    Centos/RedHat настраивает псевдоним apache

    Добавление этого в конец вашего файла /etc/httpd/conf/httpd.conf и перезапуск apache должно помочь. service httpd restart

    Alias /app "/var/www/html/app/webroot" #make sure this is actually your applications root
    <Directory "var/www/html/app/webroot">
        Options Indexes FollowSymLinks
        Order allow,deny
        Allow from all
    </Directory>
    

    Краткий ответ на ваш вопрос

    Если у вас нет root-доступа к конфигурации apache или вы просто хотите пропустить шаг добавления псевдонима, вы можете просто добавить строку RewriteBase /app в свой webroots .htaccess.

    Удалите или отредактируйте .htaccess в /var/www/html, чтобы myexample.com/ не перенаправляло в приложение торта.

    17.04.2016
  • Я попробовал короткий ответ, но получил ответ 404: Запрошенный URL-адрес /webroot/ не найден на этом сервере. Я использую дистрибутив Amazon EC2 Linux. У меня есть root-доступ, но я не могу найти папку apache2. 18.04.2016
  • Я действительно думаю, что в вашем случае настройка вашего приложения в качестве псевдонима - это путь. После быстрого поиска в Google кажется, что ваш вариант Linux похож на redhat/centos... Пожалуйста, ознакомьтесь с моим разделом Centos/RedHat, настраивающим псевдоним apache, который я только что добавил, и посмотрите, поможет ли это. 18.04.2016
  • Спасибо за ваши ответы. Кажется, что-то не так с моей настройкой CakePHP. Я заработал, переустановив CakePHP и удалив .htaccess в /var/www/html. 18.04.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..