.htaccess определяет, не является ли refferer текущим доменом. - PullRequest
2 голосов
/ 14 февраля 2012

Я пытаюсь создать .htaccess mod_rewrite, который будет вести себя по-другому, если текущий реферер не является моим собственным доменом.Например, скажем, я являюсь владельцем example.com (т.е. www.example.com, http://example.com, и т. Д.).Когда кто-то заходит на example.com (или субдомен, такой как beta.example.com), я хочу игнорировать это правило .htaccess.Поэтому я предполагаю, что регулярное выражение будет в основном просто искать где-нибудь example.com и игнорировать их.

Однако это домен, такой как otherdomain.com (который, как предполагается, указывает на example.com через cname или AЗаписать) доступ к моему сайту, я хочу перенаправить их куда-нибудь.Вот то, что у меня есть до сих пор, и я считаю, что это близко, но не работает.

Мое основное недоразумение с этими правилами - это то, что следует за RewriteRule (в данном случае ^ $).Я видел несколько разных вещей, добавленных в мой поиск в Google, и я не уверен в различиях.Например, я также видел только ^, a (. *) $ И т. Д.

RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)*(example)\.com
RewriteRule ^$ redirectfile.php [L]

Я также возился с

RewriteCond %{HTTP_REFERER} ^http://(.+\.)*\.com
RewriteCond %1 !^(example)\.$
RewriteRule ^$ redirectfile.php [R=302,L]

1 Ответ

2 голосов
/ 14 февраля 2012

Попробуйте

RewriteCond %{HTTP_REFERER} !^http://([^.]+\.)*example\.com 
RewriteRule ^ redirectfile.php [L]

У вас было ^$, что соответствовало бы только домашней странице.

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

A (.*)$ также соответствует каждому запросу, но также фиксирует совпадение, так что вы можете повторно использовать его в качестве $ 1

.
...