#apache #.htaccess #mod-rewrite
#apache #.htaccess #mod-перезапись
Вопрос:
В настоящее время я использую веб-приложение (Elastik), которое в настоящее время не поддерживает установку в подкаталог. Поскольку в данный момент я не могу создавать поддомены на сервере, мне было интересно, могу ли я использовать правила перезаписи для перенаправления любого запроса, переданного из этого каталога, обратно на себя, поскольку все связанные файлы указаны в отношении корневого каталога. Я попробовал несколько вещей, и я думаю, что это самое близкое, что у меня есть:
RewriteEngine on
RewriteBase /elastik/
RewriteCond %{REFERER} ^http://localhost/elastik/.*$
RewriteRule ^/(.*)$ $[1]
Но это все равно не работает! Кто-нибудь может помочь мне указать правильное направление?
Ответ №1:
Я понял это, используя htaccess и php вместе взятые. Я оставлю это здесь на случай, если кто-то еще столкнется с такой ситуацией, по которой я не смог найти никакой помощи в Интернете
Во-первых, вам нужно переместить все ваши обычные файлы веб-сайта в подкаталог, который я назвал «обычным» для этой цели, чтобы ваши файлы теперь выглядели так:
>public_html
>normal
>index.php
>other
>files
>elastik
>all
>elastic
>files
Теперь создайте файл .htaccess, чтобы перенаправить все в index.php файл в public_html, который выглядит следующим образом:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule . index.php [L]
И затем index.php файл в каталоге public_html должен выглядеть примерно так:
<?php
if(isset($_SERVER['HTTP_REFERER'])){
if(strpos($_SERVER['HTTP_REFERER'], "localhost/elastik")){
header("Location: /elastik".$_SERVER['REQUEST_URI']);
}
else{
$uri = $_SERVER['REQUEST_URI'];
header("Location: /normal".$uri);
}
}
else{
header("Location: /normal".$uri);
}
?>
Мне пришлось переместить мои php-включения, на которые ссылаются в описании, в корень документа, обратно в каталог public_html, но после того, как я это сделал, все остальное работает гладко