Возникла такая проблема:
требуется посетителям, заходящим на сайт с определенного урла, вместо главной страницы подсунуть свой файл. Сначала показалось, что проблем не будет – забить в htaccess нужные правила и все.
Но конструкция (как кажется, правильная) не действует.
Сейчас htaccess выглядит так –
CharsetSourceEnc UTF-8
CharsetDefault UTF-8
RewriteEngine on
RewriteCond %{HTTP_REFERER} ^http://badsite.ru/.*$
RewriteRule ^/$ /you-suck.htm [L]
- BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
- END WordPress
Не работает. Хочется совета:rolleyes:
у тебя 2 раза включен мод реврайт попробуй пропиши так
CharsetSourceEnc UTF-8
CharsetDefault UTF-8
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteCond %{HTTP_REFERER} ^http://badsite.ru/.*$
RewriteRule ^/$ /you-suck.htm [L]
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress
Не действует. Страница открывается, редиректа не происходит, ошибок в логах тоже нет. Мистика какая-то.
http://wordpress.org/support/topic/62400?replies=9 вот здесь пишут про необходимость дропить таблицу в БД для пересоздания правил. Теме, правда, год уже.
Это что же означает, что WP единожды прописанные правила не обновляет что ли?
хз сам парюся с мод реврайтом нужен примерно такой же результат как у тебя.
А что мешает в index.php анализировать HTTP_REFERER и делать редирект через header()?
!!!Кстати неплохая идея!
Но все равно постараюсь разобраться с мод реврайтом.
Максим, а можно как-нибудь подетальнее?:)
+1
В главном каталоге WordPress есть файл index.php. Из нескольких строчек. Можно в него в начало добавить условие на проверку HTTP_REFERER.
Максим, действие будет вида redirect(‘/’)?
А мне нужно сделать проверку по реферреру на определенной странице, например раньше делал такие условия в сайдбаре (sidebar.php)
Теперь нужно чтобы на страницу с id6 могли попасть только с определенного реферрера, а всех у кого реферрер пустой (зашли по прямой ссылке) или не соответствует указанному отправляло на главную страницу, подскажите как это сделать?
точнее как в вышеприведенному коду добавить условие проверки реферрера?
Подскажите пожалуйста.
Хм… Ну ладно. Редирект на php выглядит так:
Если же вы хотите делать каие-то выборочные действия, например в сайд баре, то опятьже смотрите переменную $_SERVER[‘HTTP_REFERER’] и делаете то, что вам нужно.
Максим, спасибо. Дело в том, что на дефолтной теме это проходит, а в моей index.php больше, чем несколько строк, быть может это и вызывает проблемы.
Спасибо за помощь еще раз.
Сделал так
Вчера работало что странно…сейчас нет подскажите может что ни так сделал?
У меня не работает ни под каким соусом. Через mod_rewrite даже через данную хостером конструкцию (она даже без редиректа – просто на запрет с определенных урлов), ни через редирект в хедере.
чтобы не плодить темы, решил написать здесь
На моем хостинге находятся 3 сайта, один из них блог.
Site1.com (блог на вордпресс) лежит в корневом каталоге, site2.com и site3.com лежат в папках site2 и site3. В панели управления хостингом для сайтов site2 и site3 стоит редирект в соответствующие папки.
Если пользователь набирает site1.com site2.com site3.com то попадает на эти сайты и в адресной строке отображаются адреса этих сайтов.
Я добавил в .htaccess код, чтобы site1.com все время был с www. Но возникла проблема, что если набрать в адресной строке site2.com или site3.com, то пользователь редиректится на www.site1.com/site2 или www.site1.com/site2 (что мне не нужно, т.к. не хочу, чтобы польлзователь видел связь этих доменов). Я так понимаю, что надо прописать в .htaccess какое-то исключающее условие, но как это сделать не знаю. Буду очень признателен, если кто-нибдуь поможет.
мой .htaccess
По своим мукам с mod_rewrite понял следующее:
он работает как-то очень избирательно на разных сайтах (видимо из-за настроек апача у хостера).
Поэтому нормальное решение здесь испросить совета и помощи у тех. поддержки.
Вообще с mod_rewrite очень сложно работать. Слишком много подводных камней, да и апач у многих по разному настроен. Поэтому если есть возможность использовать редиректы на PHP, то лучше уж их и использовать. Как минимум это будет работать везде.
Fencer14, у вас задача по-идее решается с помощью паркованного (дополнительного) домена. То есть прописываете свои site2, как сининим site1 и site2 будет физически обращаться к site1, хотя адрес останется site2. Впрочем такая возможность должна быть разрешена в вашем тарифном плане. Такие же сининимы можно делать и с каталогами (поддоменами), опять же, если это разрешено в тарифном плане.