Это просто анонимная функция, которая выполняется сразу после ее создания.
Это как если бы вы назначили ее переменной и использовали ее сразу после, только без переменной:
var f = function () {
};
f();
В jQuery есть аналогичная конструкция, о которой вы могли бы подумать:
$(function(){
});
Это краткая форма привязки события ready
:
$(document).ready(function(){
});
Может быть так:
Options +FollowSymLinks
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} ^OLDDOMAIN\.com$ [NC]
RewriteRule ^(.*)$ http://NEWDOMAIN.com [R=301,L]
С точки зрения удобства использования было бы лучше, если бы вы также отправили путь с запросом (т. е. то, что у вас есть на данный момент), и пусть ваш новый сайт справится с ним:
Вы искали "/products".
К сожалению, эта страница отсутствует. Вы хотели бы посетить «/ new_products» вместо этого?
blockquote>(и, тем не менее, делать это автоматически.)
Это, очевидно, много кодирования и эвристики для более крупный веб-сайт, но, на мой взгляд, он окупился бы с точки зрения удовлетворенности пользователей (когда ваша тщательно сохраненная закладка вашего продукта мечты приведет вас на первую страницу newdomain.com, это разочаровывает.)
Мое решение как SymLinks не работало на моем сервере, поэтому я использовал if на моем PHP.
function curPageURL() {
$pageURL = 'http';
if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
$pageURL .= "://";
if ($_SERVER["SERVER_PORT"] != "80") {
$pageURL .= $_SERVER["SERVER_NAME"] . ":" . $_SERVER["SERVER_PORT"] . $_SERVER["REQUEST_URI"];
} else {
$pageURL .= $_SERVER["SERVER_NAME"] . $_SERVER["REQUEST_URI"];
}
return $pageURL;
}
$redirect = str_replace("www.", "", curPageURL());
$remove_http_root = str_replace('http://', '', $redirect);
$split_url_array = explode('/', $remove_http_root );
if($split_url_array[0] == "olddomain.com"){
header("Location: http://www.newdomain.com/$split_url_array[1]");
die();
}
Я использовал для своего блога Wordpress это как .htaccess. Он преобразует http://www.blah.nl/asad , http://blah.nl/asad , http://www.blah.com / asad и т. д., http://blah.com/asad . Благодаря всем остальным ответам я понял это.
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !.*YOURDOMAIN\.com$ [NC]
RewriteRule ^(.*)$ http://YOURDOMAIN.com/$1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
Если вы хотите перенаправить из какого-либо места в субдомен, вы можете использовать:
Redirect 301 /Old-Location/ http://subdomain.yourdomain.com
RewriteEngine On
выбрасывает 500 Internal Error. Это очень ограниченное веб-пространство. Использование Redirect 301 / http://foo
- единственный возможный способ борьбы.
– Sprinterfreak
13 January 2015 в 22:24
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP_HOST} ^olddomain.com$ [OR]
RewriteCond %{HTTP_HOST} ^www.olddomain.com$
RewriteRule (.*)$ http://www.newdomain.com/$1 [R=301,L]
</IfModule>
Это сработало для меня
Я попробовал ответить user968421 и решение OP, но браузер обнаружил ошибку безопасности для страницы проверки. Я не могу сказать, почему именно.
Наш хост (Site Ground) тоже не мог понять.
Окончательное решение было близким, но небольшая корректировка ответа пользователя968421 (сторона примечания: в отличие от OP, я пытался перенаправить на соответствующую страницу, а не только на домашнюю страницу, поэтому я сохранил обратную ссылку [$1
после домена] из ответа user968421):
RewriteEngine on
RewriteRule (.*) https://newdomain.com/$1 [R=301,L]
Получил настройку из этого генератора перенаправления htaccess , рекомендованного статьей Host Gator (отчаянные времена, отчаянные меры, amiright?).
Здесь этот перенаправляет все после имени домена на url к той же самой копии на новом домене url:
RewriteEngine on
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
www.example.net/somepage.html?var=foo
перенаправляется на www.newdomain.com/somepage.html?var=foo
Моя репутация не позволит мне прокомментировать ответ, но я просто хотел указать, что самый высокий рейтинг здесь имеет ошибку:
RewriteEngine on
RewriteRule ^(.*)$ http://www.newdomain.com$1 [R=301,L]
должен иметь косую черту перед $ 1 , поэтому
RewriteEngine on
RewriteRule ^(.*)$ http://www.newdomain.com/$1 [R=301,L]
Если вы хотите перенаправить на новый новый сайт (домен) без параметров или страниц, используйте это:
RewriteEngine On
RewriteRule / http://new-domain.com/$1? [R=301]
.htaccess
, поскольку оно просто не будет соответствовать URL-адресам в корне документа. Он будет работать в конфигурации сервера или в контексте VirtualHost.
– MrWhite
7 January 2017 в 15:15
Это ошибка в более старых версиях apache (и, следовательно, mod_rewrite), где префикс пути был добавлен к переписанному пути, если он был изменен. См. здесь
Я думаю, что он был исправлен в apache2 V2.2.12, есть специальный флаг, который вам нужно использовать, который я добавлю здесь, когда я его найду (я думаю, это был NP для No Path)
RewriteRule ^(.*)$ http://newdomain.com/ [??]
Существуют различные способы сделать это и различные переадресации, я перечислял их ниже:
301 (постоянный) Перенаправление: постоянно размещать весь сайт на другом URL-адресе. Это наиболее распространенный тип перенаправления и полезен в большинстве ситуаций. В этом примере мы перенаправляем домен «example.com»:
# This allows you to redirect your entire website to any other domain
Redirect 301 / http://example.com/
302 (Временный) Перенаправление: укажите весь сайт на другой временный URL. Это полезно для целей SEO, когда у вас есть временная целевая страница и вы планируете вернуться на главную целевую страницу позднее:
# This allows you to redirect your entire website to any other domain
Redirect 302 / http://example.com/
Перенаправить index.html в определенную подпапку:
# This allows you to redirect index.html to a specific subfolder
Redirect /index.html http://example.com/newdirectory/
Перенаправить старый файл в новый путь к файлу:
# Redirect old file path to new file path
Redirect /olddirectory/oldfile.html http://example.com/newdirectory/newfile.html
Перенаправить на определенную страницу индекса:
# Provide Specific Index Page (Set the default handler)
DirectoryIndex index.html
Redirect 301 / http://example.com/$1
, то все страницы исходного сайта будут перенаправлены на новый корень сайта
– YassinMK
23 May 2016 в 14:17
$1
, вы думаете о директиве RedirectMatch
(но тогда вам все равно нужно определить группу захвата для ссылки $1
для ссылки).
– MrWhite
7 January 2017 в 15:22
Redirect
будут перенаправляться, например, в то время как OP хочет перенаправить только на домашнюю страницу нового сайта (хотя это само по себе не рекомендуется). Возможно, вам понадобится использовать директиву RedirectMatch
, если вы хотите просто перенаправить на определенный URL-адрес.
– MrWhite
7 January 2017 в 15:23
Использовать условные переадресации с Options -FollowSymLinks
и AllowOverride -Options
, отключенные Hoster, если также нужно обслуживать несколько локальных файлов:
Пример .htaccess
# Redirect everything except index.html to http://foo
<FilesMatch "(?<!index\.html)$">
Redirect 301 / http://foo/
</FilesMatch>
В этом примере будет обслуживать локальный index.html и перенаправляет всех остальных сотрудников в новый домен.
Если новый домен, на который вы перенаправляете свой старый сайт, находится на другом компьютере, вы можете просто использовать Redirect
Redirect 301 / http://newdomain.com
. Это перенаправит все запросы из olddomain
в newdomain
.
Redirect
не работает или может вызвать Redirect loop
, если ваш новый домен и olddomain находятся на одном хосте, в этом случае вам нужно будет использовать mod-rewrite
для переадресации на основе на запрошенном заголовке хоста.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?olddomain\.com$
RewriteRule ^ http://newdomain.com%{REQUEST_URI} [NE,L,R]
Чтобы уточнить, после удаления перенаправления хостинга, который был в пути, мое исходное решение также работает:
RewriteEngine On
RewriteRule ^(.*)$ http://newdomain.com/ [R=301]
RewriteCond %{HTTP_HOST} !^NEWDOMAIN\.com$ [NC]
? – Jim Geurts 21 June 2012 в 19:28