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

Моя папка для 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>

person Linus Odenring    schedule 05.10.2012    source источник
comment
Я еще ничего не пробовал, потому что я не нашел решения по этому вопросу.   -  person Linus Odenring    schedule 05.10.2012
comment
Вопрос неточный и неясный в его нынешнем виде. Пожалуйста, пересмотрите его и постарайтесь более четко сформулировать, что вы хотите, чтобы произошло. И не смешивайте такие выражения, как доменные имена, пути и URL-адреса.   -  person arkascha    schedule 05.10.2012
comment
Добавлено больше информации и надеюсь, что это даст лучший ответ на вопрос   -  person Linus Odenring    schedule 05.10.2012


Ответы (2)


Если вы можете использовать только .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.

person Joachim Isaksson    schedule 05.10.2012

Попробуйте закинуть в 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 на этот.

person Dan Barzilay    schedule 05.10.2012
comment
Мне надоело показанное вами решение mod_rewrite, но оно просто выдает медицинскую ошибку 500, и я не могу получить доступ к httpd.conf, потому что я нахожусь на общем веб-хостинге. - person Linus Odenring; 05.10.2012
comment
если вы не можете получить доступ к файлу httpd.conf, я боюсь, что невозможно изменить корневой каталог по умолчанию. - person Dan Barzilay; 05.10.2012
comment
Я отправил сообщение своему хосту (binero.se) и спросил, можно ли его изменить. Потому что это причина безопасности, когда я собираюсь предоставить другим людям доступ к сайту через ftp. - person Linus Odenring; 05.10.2012
comment
Я не видел ваш текущий htaccess, измените его на мое редактирование в моем ответе - person Dan Barzilay; 05.10.2012