Как настроить правила перенаправления Apache mod_rewrite?

Я не совсем знаком с настройками Apache. Мне нужно, чтобы сайт загружал содержимое подкаталога, кроме одной страницы.

В настоящее время есть веб-сайт и нужно сделать все звонки на http://www.domain.com & http://domain.com загрузить содержимое из http://www.domain.com/subfolder (но выглядит как http://www.domain.com)

Только кроме http://www.domain.com/checkout страница, эта страница должна перенаправить на https://www.domain.com/checkout для безопасной проверки

Текущий mod_rewrite показан ниже:

RewriteEngine on

RewriteRule ^$ domain/index.php [L]
RewriteCond %{DOCUMENT_ROOT}/domain%{REQUEST_URI} -f
RewriteRule .* domain/$0 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* domain/index.php?q=$0 [QSA]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://domain.com.au/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://domain.com.au$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.domain.com.au/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://www.domain.com.au$      [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://www.domain.com.au [R,NC]

0

Решение

Откройте файл с именем .htaccess в корне вашего веб-сервера и добавьте следующие строки кода:

RewriteEngine On

RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]

RewriteCond %{SERVER_PORT} 80
RewriteRule ^checkout/(.*)$ https://www.yourdomain.com/checkout/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_URI} !^/checkout/
RewriteRule ^(.*)$ /subfolder/$1 [NE,L,QSA]

перепишите для своего полного .htaccess-файла (проверьте, работает ли это, тогда я удалю предыдущий код):

RewriteRule ^$ subfolder/index.php [QSA,L]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?yourdomain.com [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://www.yourdomain.com [NC]

RewriteCond %{HTTP_HOST} ^yourdomain.com [NC]
RewriteRule ^(.*)$ http://www.yourdomain.com/$1 [R=301,L]

RewriteCond %{SERVER_PORT} 80
RewriteRule ^checkout/(.*)$ https://www.yourdomain.com/checkout/$1 [R=301,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^subfolder/(.*) /subfolder/index.php?q=$1 [L,QSA]

RewriteCond %{HTTP_HOST} ^www.yourdomain.com [NC]
RewriteCond %{REQUEST_URI} !^/subfolder/
RewriteCond %{REQUEST_URI} !^/checkout/
RewriteRule ^(.*)$ /subfolder/$1 [NE,L,QSA]
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]