Вы должны только await
на что-то, что возвращает Promise. Я бы определенно рекомендовал читать Promises до того, как вы начнете работать с async
и await
. Вероятно, вы можете заставить этот пример работать, создав свою собственную функцию-обертку вокруг request
, чтобы вернуть ее, например:
function doRequest(url) {
return new Promise(function (resolve, reject) {
request(url, function (error, res, body) {
if (!error && res.statusCode == 200) {
resolve(body);
} else {
reject(error);
}
});
});
}
// Usage:
async function main() {
let res = await doRequest(url);
console.log(res);
}
main();
Изменить: альтернативно, вы можете изучить request-prom вместо обычного модуля запроса.
Для этой цели можно использовать Redirect
Redirect 301 / www.example.com/store
Или Псевдоним для отображения
Alias / /store
Редактировать : mod_alias применим только в httpd.conf.
Refrences
попытайтесь использовать ниже строки в htaccess
Примечание: вам может потребоваться проверить, что является именем default.html
default.html - это файл, который загружается по умолчанию в корневой папке.
RewriteEngine
Redirect /default.html http://example.com/store/
Попробуйте следующее:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^example\.com$
RewriteRule (.*) http://www.example.com/$1 [R=301,L]
RewriteRule ^$ store [L]
Если вы хотите внешнее перенаправление (которое заставляет браузер посещения отображать перенаправленный URL-адрес), установите там также флаг R
:
RewriteRule ^$ /store [L,R=301]
www.example.com
как URI после перенаправления? Если нет, как бы это изменить?
– stefmikhail
5 October 2011 в 22:05
RewriteCond
и первый RewriteRule
?
– stefmikhail
5 October 2011 в 22:42
/aboveSubDir
либо браузером, либо сервером.
– Gumbo
27 July 2012 в 06:47
Еще одна альтернатива, если вы хотите переписать URL-адрес и скрыть исходный URL-адрес:
RewriteEngine on
RewriteRule ^(.*)$ /store/$1 [L]
При этом, если вы, например, введите http://www.example.com/product.php?id=4
, он будет прозрачно открывать файл в http://www.example.com/store/product.php?id=4
но не отображая пользователю полный URL-адрес.
QSA
(добавление строки запроса) в [L]
([L, QSA]
), если вы хотите, чтобы строки запроса переносились на перезаписанный URL-адрес.
– devios1
10 October 2013 в 05:53
Я думаю, что основные проблемы с кодом, который вы выложили:
Для справки, вот код, который у вас есть в настоящее время:
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sample.com$
RewriteRule (.*) http://www.sample.com/$1 [R=301,L]
RewriteCond %{HTTP_HOST} ^(.+)\www.sample\.com$
RewriteRule ^/(.*)$ /samle/%1/$1 [L]
Раньше я использую следующий код, который правильно работает для перенаправления корневого URL-адреса каждого из моих доменов / поддоменов в их подкаталоги соответствия, которые в точности называются суб-доменом, следующим образом:
RewriteCond %{HTTP_HOST} ^sub1.domain1.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain1.com/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^sub2.domain1.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^sub1.domain2.com
RewriteCond %{REQUEST_URI} !subs/sub1.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]
RewriteCond %{HTTP_HOST} ^sub2.domain2.com
RewriteCond %{REQUEST_URI} !subs/sub2.domain2.com/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]
Однако, когда я хочу добавить еще одну подсистему или домены, ее нужно будет добавить в код выше. Это должно быть гораздо удобнее упростить, чтобы работать как подстановочный знак (*), как показано ниже:
RewriteCond %{HTTP_HOST} ^sub
RewriteCond %{REQUEST_URI} !/subs/
RewriteRule ^(.*)$ subs/%{HTTP_HOST}/$1 [L,QSA]
Поэтому всякий раз, когда добавляются дополнительные поддомены / домены, если имя поддомена имеет префикс sub (например, : sub3.domain1.com, sub1.domain3.com и т. д.), код останется в силе.
Я был удивлен, что никто не упоминал об этом:
RedirectMatch ^/$ /store/
В принципе, он перенаправляет корень и только корневой URL. Ответ возник из этой ссылки
Я не понимаю ваш вопрос ...
Если вы хотите перенаправить каждый запрос в подпапку:
RewriteRule ^(.*)$ shop/$1 [L,QSA]
http://www.example.com/* -> wwwroot/store/*
Если вы хотите перенаправить на подпапку, которая имеет доменное имя
RewriteCond %{HTTP_HOST} ([^\.]+\.[^\.]+)$
RewriteRule ^(.*)$ %1/$1 [L,QSA]
http://www.example.com/* -> wwwroot/example.com/*
([^\.]+\.[^\.]+)$
, чтобы зарезервировать домен как имя подпапки.
– Chetabahana
16 February 2016 в 16:53
Вот что я использовал для перенаправления в подкаталог. Это сделало это невидимым и до сих пор позволяет через запросы, которые соответствуют существующему файлу или тому подобное.
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteCond %{REQUEST_URI} !^/subdir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /subdir/$1
RewriteCond %{HTTP_HOST} ^(www.)?site.com$
RewriteRule ^(/)?$ subdir/index.php [L]
Измените site.com и subdir своими значениями.
Это казалось самым простым решением:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]
Я получал петли перенаправления с некоторыми другими решениями.
вы просто добавляете этот код в свой .htaccess файл
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /folder/index.php [L]
</IfModule>
Большинство из приведенных выше решений верны, но все они пропускают прозрачность перенаправления.
В моем случае, посетив сайт www.example.com, я хотел получить перенаправление в подкаталог / хранилище, но без обновления URL-адреса на www.example.com/store. (все, что я хочу, - это получить код этого кода страницы). Если это ваш случай, то решение ниже работает отлично.
RewriteEngine on
RewriteCond %{HTTP_HOST} example\.com [NC]
RewriteCond %{REQUEST_URI} ^/$
RewriteRule ^(.*)$ /store/$1 [L]
source: http://wiki.dreamhost.com/Transparently_redirect_your_root_directory_to_a_subdirectory
RewriteRule ^(.*)$ http://otherpage.com/subfolder/$1 [L]
, но она обновляет URL-адрес
– steps
23 September 2015 в 11:16
example.com
и otherpage.com
. Когда я посещаю example.com
, я хочу, чтобы содержимое из otherpage.com/subfolder
отображалось без обновления URL-адреса
– steps
24 September 2015 в 15:53
Попробует subdir, если файл не существует в корне. Это необходимо, поскольку я переместил основной веб-сайт .html, который ожидает, что он будет запущен на корневом уровне и подталкивает его в поддиректор. Работает только в том случае, если все файлы плоские (в поддире нет возможности обхода htaccess). Полезно для связанных вещей, таких как css и js-файлы.
# Internal Redirect to subdir if file is found there.
RewriteEngine on
RewriteCond %{DOCUMENT_ROOT}/%{REQUEST_URI} !-s
RewriteCond %{DOCUMENT_ROOT}/subdir/%{REQUEST_URI} -s
RewriteRule ^(.*)$ /subdir/$1 [L]
Два способа выхода из возможных решений для этого: 1. Создайте файл .htaccess
в корневой папке (просто замените example.com и my_dir соответствующими значениями):
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteCond %{REQUEST_URI} !^/my_dir/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /my_dir/$1
RewriteCond %{HTTP_HOST} ^(www.)?example.com$
RewriteRule ^(/)?$ my_dir/index.php [L]
</IfModule>
Я обнаружил, что для того, чтобы избежать кругового перенаправления, важно ограничить область перенаправления корневым каталогом. Я бы использовал:
RewriteEngine on
RewriteCond %{REQUEST_URI} ^/$
RewriteRule (.*) http://www.example.com/store [R=301,L]
Чтобы установить невидимую переадресацию из корня в подпапку, вы можете использовать следующий RewriteRule в /root/.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/subfolder
RewriteRule ^(.*)$ /subfolder/$1 [NC,L]
Правило выше будет внутренне перенаправлять браузер из:
-
И
-
, в то время как браузер останется в корневой папке.
Немного googling дает мне следующие результаты:
RewriteEngine On RewriteBase / RewriteRule ^ index. (. *)? $ http://domain.com/subfolder/ [r = 301]
Это перенаправит любую попытку доступа к файлу с именем index.something в вашу подпапку, независимо от того, существует файл или нет.
Или попробуйте это:
RewriteCond% {HTTP_HOST}! ^ Www.sample.com $ [NC] RewriteRule ^ (. *) $% {HTTP_HOST} / samlse / $ 1 [R = 301, L]
Я не делал много перенаправления в файле .htaccess, поэтому я не уверен, что это сработает.
Вы можете использовать правило перезаписи, которое использует ^ $ для представления корня и переписывает его в ваш каталог / store, например:
RewriteEngine On
RewriteRule ^$ /store [L]
Я отвечу на исходный вопрос, не указав другой возможный синтаксис (есть много других ответов), но, указывая на то, с чем мне приходилось иметь дело, потребовалось некоторое время, чтобы выяснить:
What am I doing wrong?
Возможно, что% {HTTP_HOST} не заполняется должным образом или вообще отсутствует. Хотя, я видел только, что это происходит только на одной машине на общем хосте, с некоторым пользовательским исправленным apache 2.2, тем не менее, это возможность.