Моя папка для 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>
Ответ 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 на этот.