jkm

Рейтинг
120
Регистрация
20.02.2014

RewriteEngine On


RewriteCond %{HTTP_HOST} ^(?:www\.|)site\.ru$ [NC]
RewriteCond %{HTTP:FROM} google|yandex
RewriteRule ^(.*)$ http://newsite.ru/$1 [R=301,L]

Поисками индексного файла в каждом каталоге занимается mod_dir и настраивается в DirectoryIndex

А в тех правилах mod_rewrite условие RewriteCond %{REQUEST_FILENAME} !-d проверяет что не запрошен существующий каталог.

Так что если /_site/сайт1/wp-content/ существующий каталог и в нём есть index.php, то mod_dir сделает своё дело и вызовет /_site/сайт1/wp-content/index.php.

Alfinnov:

RewriteRule ^sitemap.xml$ /_site/{сайтN}/sitemap.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(jpg|gif|png|jpe|jpeg)$
RewriteRule . /_site/{сайтN}/index.php [L]

/ru/forum/comment/16179414


RewriteRule ^sitemap.xml$ sitemap.php [L,NC]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(jpg|gif|png|jpe|jpeg)$
RewriteRule . index.php [L]

Просто перенести редирект выше остальных правил.

Достаточно не ставить слеш перед index.php и запрос направит в ту папку, где находится сам htaccess.

Например, в файле /_site/{сайт1}/.htaccess поставить правило

RewriteRule . index.php [L]

Если ничего не подкручивали в RewriteBase, то запрос направит в /_site/{сайт1}/index.php

jano:
к примеру для 30 папок (pic1,pic2,pic3 и т д)
jano:
было pics, стало pics(\d+)

Так а на самом деле там pics1 или pic1?

И в какие из трёх location ставили этот шаблон?

Начиная с версии Apache 2.4 есть expr

RewriteEngine on

RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /$1-$2$3 [L,R=301]
RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /$1$2$3 [L,R=301]

RewriteCond expr "tolower(%{REQUEST_URI}) =~ /(.+)/"
RewriteRule [A-Z][^/]*(small|-\d+)\.jpg$ %1 [L,R=301]

Если есть доступ править настройки VirtualHost, то можно использовать RewriteMap.

В VirtualHost добавить:

RewriteMap lc int:tolower

А в .htaccess

RewriteEngine on

RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /${lc:$1}-$2$3 [L,R=301]
RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /${lc:$1}$2$3 [L,R=301]

RedirectMatch 301 ^(.+)\((\d+)\)(\.jpg)$ $1-$2$3

RedirectMatch 301 ^(.+)\((small)\)((?:-\d+|)\.jpg)$ $1$2$3

Или

RewriteEngine on

RewriteRule ^(.+)\((\d+)\)(\.jpg)$ /$1-$2$3 [L,R=301]
RewriteRule ^(.+)\((small)\)((?:-\d+|)\.jpg)$ /$1$2$3 [L,R=301]

RewriteCond %{DOCUMENT_ROOT}/site.%{HTTP_HOST}/$0 -f

RewriteRule ^.+\.(css|js|jpe?g|mp4|gif)$ /site.%{HTTP_HOST}/$0 [L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [L]

Заблокировать прямое обращение к адресам начинающимся с "/site." можно так:

RewriteCond %{THE_REQUEST} " /site\."

RewriteRule ^site\. - [F]

Или так

RewriteCond %{ENV:REDIRECT_STATUS} ^$

RewriteRule ^site\. - [F]
Всего: 745