Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Изменить каталог public_html .htaccess

Автор вопроса: Linus OdenringОтветов: 2

Моя папка для public_html - это /domain.com/public_html/, но я хочу, чтобы htaccess перенаправлял их в папку /domain/public_html/www/, но все еще имел domain.com в качестве домена, а не domain.com/www.

РЕДАКТИРОВАТЬ: я хочу, чтобы подпапка www в public_html была корнем по умолчанию, а не самой public_html

Любое решение по этому поводу?

Вот мой текущий htacess

Options +FollowSymlinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ www/$1 [NC,L]
</IfModule>
  • Я еще ничего не пробовал, потому что я не нашел решения по этому вопросу. Linus Odenring 05.10.2012
  • Вопрос неточный и неясный в его нынешнем виде. Пожалуйста, пересмотрите его и постарайтесь более четко сформулировать, что вы хотите, чтобы произошло. И не смешивайте такие выражения, как доменные имена, пути и URL-адреса. arkascha 05.10.2012
  • Добавлено больше информации и надеюсь, что это даст лучший ответ на вопрос Linus Odenring 05.10.2012

apachedirectory

Ответы

Ответ 1 · рейтинг 5 · Joachim Isaksson

Если вы можете использовать только .htaccess, этот простой способ подойдет;

RewriteEngine on
RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ /www/$1 [QSA]

Объяснение;

RewriteEngine on                      # Turn on mod_rewrite functionality
RewriteCond %{REQUEST_URI} !^/www/    # Don't rewrite requests that are
                                      # already to the /www/ directory.
                                      # If this isn't here, we'll go into
                                      # a neverending loop.
RewriteRule ^(.*)$ /www/$1 [QSA]      # Rewrite all else to the www subdirectory
                                      # QSA = keep the query string.

РЕДАКТИРОВАТЬ: Не видел ваш существующий htaccess, это (за исключением избыточного оператора RewriteEngine), вероятно, должно идти в конце, а не весь блок IfModule.

Ответ 2 · Dan Barzilay

Попробуйте закинуть в htaccess на папку public_html:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^(.*)$ www/$1 [NC,L]
</IfModule>

ИЛИ

Отредактируйте конфигурацию апача (httpd.conf)

vi /usr/local/apache/conf/httpd.conf

и установите DocumentRoot домена как

DocumentRoot /home/user/public_html/www

Сохраните файл и перезапустите службу httpd.

ИЛИ (рекомендуется)

Взгляните на этот вопрос (и ответ) - https://stackoverflow.com/a/5891858/1361042

ИЗМЕНИТЬ

Используйте этот HTACCESS:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/www/
    RewriteRule ^(.*)$ www/$1 [NC, QSA]
</IfModule>

не добавляйте его к себе, а замените свой htaccess на этот.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы