2016-10-17 2 views
2

Корневой каталог - это файл конфигурации файла index.php и .htaccess. Как сделать 301 перенаправить все URL-адреса на/(главную страницу), но URL'а со строкой http: //mysite.loc/1, http: //mysite.loc/2 и http: //mysite.loc/?Перенаправить все страницы в дом, кроме двух страниц

Например:

http: //mysite.loc/ (URL available, show index.php) 
http: //mysite.loc/1 (URL available, show index.php) 
http: //mysite.loc/2 (URL available, show index.php) 
http: //mysite.loc/testing (301 redirect on /) 
http: //mysite.loc/qwerty (301 redirect on /) 

Проблема заключается в бесконечных перенаправляет на главную страницу.

Примечание: вы должны создать правило только в файле конфигурации .htaccess, PHP-скрипты не могут использоваться.

Все доступные URL приводит к/(index.php файл)

ответ

0

Вы можете использовать это правило в качестве первого правила:

RewriteEngine On 

# remove index.php 
RewriteCond %{THE_REQUEST} /index\.php [NC] 
RewriteRule ^(.*/)?index\.php$ /$1 [L,R=301,NE] 

RewriteRule !^(1|2|index\.php)?/?$/[L,R=301] 

RewriteRule ^(1|2)?/?$ index.php [L] 

Очистить кеш браузера перед тестированием этого изменения.

+0

Это работает, но нужно mysite.loc/send отображает содержимое index.php –

+0

Извините, mysite.loc/1 или mysite.loc/2 show index.php –

+0

Три адреса 1) mysite.loс 2) mysite.loс/1 3) mysite.loс/2 должен продемонстрировать один и контент из файла index.php. –

0

Что-то, как это должно работать:

RewriteEngine On 
RewriteCond %{ENV:REDIRECT_STATUS} 200 
RewriteCond %{REQUEST_URI} !/(1|2) [NC] 
RewriteRule ^(.*)$/[L,R=301] 
+0

Сервер отправляет запрос по этому адресу, чтобы он никогда не кончился. У меня такая же ошибка :) –

+0

Скорее всего, нужно RewriteCond% {ENV: REDIRECT_STATUS}^$. Но пока я не понимаю, как его применять. –