2015-10-27 5 views
0

Я хочу перенаправить основной домен «example.com» в подкаталог «sub» с .htaccess. У меня есть файл .htaccess с таким содержимым:.htaccess redirect не работает

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteCond %{REQUEST_URI} !^/sub/ 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule ^(.*)$ /sub/$1 
RewriteCond %{HTTP_HOST} ^(www.)?example.com$ 
RewriteRule ^(/)?$ sub/index.php [L] 

и он работает нормально, если я вхожу example.com или www.example.com в адресной строке веб-браузера, но если я вхожу example.com/index.php или www.example.com/index.php, который не работает, и он переходит в основную папку, а не в подпапку sub.

Что я делаю неправильно?

ответ

-1

Почему бы вам не настроить перенаправление в файле index.php? У вашего файла .htaccess нет условия для этого. Поскольку вы нажимаете на страницу напрямую.

В соответствии мой комментарий ниже, поставить это на страницу index.php:

header("Location: http://example.com/sub/index.php"); 
die(); 
+0

Я не понять :( – user2204356

+0

Похоже, вы пытаетесь перехватить соединения с вашим корнем и отправить их в «/sub/index.php». Но он не работает, когда кто-то входит в «index.php». Это потому, что .htacce В этом случае ss ничего не сделает. Вам нужно переадресовать внутри THAT-файла. – durbnpoisn

+0

Я не хочу, чтобы перенаправление было видно в адресной строке, и если я перенаправляю его в php-файл с помощью функции header(), это видно. Но если это правда, что durbnpoisn грустно, чем это невозможно сделать :( – user2204356

0

Это прекрасно работает:

RewriteEngine on 
RewriteBase/

RewriteCond %{HTTP_HOST} ^(www.)?example\.org$ [NC] 
RewriteCond %{REQUEST_URI} !^/sub/ 
RewriteRule ^(.*)$ /sub/$1 [L] 

Кроме того, вы можете использовать this for testing your htaccess