На моей локальной машине работают следующие работы:
<VirtualHost *:80> ##ServerAdmin postmaster@dummy-host2.localhost DocumentRoot "C:/xampp/htdocs/website_1" ServerName testpage.com/website_1 ##ServerAlias www.recruitement.localhost ##ErrorLog "logs/dummy-host2.localhost-error.log" ##CustomLog "logs/dummy-host2.localhost-access.log" combined </VirtualHost>
Howerver Im, принимающий мой сайт на хостинговой компании под названием justhost.com, и они не позволяют мне изменять httpd-vhosts.conf или httpd.conf . Теперь весь мой сайт закодирован таким образом, что файлы под сайтом _1 ссылаются на другие файлы под сайтом_1, используя простой слэш «/», то есть веб-сайт_1, рассматривается как корень документа. Это отлично работает на локальном компьютере, но при загрузке на сервер он дает мне ошибки сервера, потому что не могу найти файлы с тех пор, как пытается найти эти файлы в public_html
Например:
public_html - website_1 - script.php - style.css
внутри моего script.php :
<a href="/style.css">See My Style</a>
это хорошо работает на локальном компьютере, но на хосте он терпит неудачу, так как он пытается найти style.css под public_html, а не public_html / website_1
Есть ли способ иметь несколько корней документов без использования VHosts? Как использовать .htaccess или что-то еще. Пожалуйста, я хочу попытаться избежать переписывания кода как можно больше, так как его около 10 тысяч строк кода.
Включите mod_rewrite и .htaccess через httpd.conf
а затем поместите этот код в свой .htaccess
в каталоге DOCUMENT_ROOT
:
Options +FollowSymLinks -MultiViews # Turn mod_rewrite on RewriteEngine On RewriteBase / RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -f [OR] RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -d [OR] RewriteCond %{DOCUMENT_ROOT}/website_1/$1 -l RewriteRule (?!^website_1/)^(.*)$ /website_1/$1 [R=302,L,NC]
После проверки, что он работает нормально, замените R=302
на R=301
. Избегайте использования R=301
(Перманентный переадресация) при проверке правил mod_rewrite.
Решением всех запросов к изображениям на root может быть решение. Вы можете попробовать это в одном файле .htaccess в корневом каталоге:
Options +FollowSymlinks -MultiViews RewriteEngine On RewriteBase / # Check if request is for an image at root. Add/remove file types if necessary. RewriteCond %{REQUEST_URI} ^/([^.]+)\.(png|jpg|gif|css) [NC] RewriteCond %{REQUEST_URI} !/website_1 [NC] # Rewrite request to point to "website_1" directory RewriteRule .* /website_1/%1.%2 [L,NC]
Сделайте запись в .htaccess. Предположим, у вас есть сайт abc.com. Вы хотите запустить другой сайт в каталоге. Затем создайте .htaccess в родительском каталоге, указанном на abc.com.
RewriteEngine on RewriteCond %{HTTP_HOST} ^abc.com$ [NC,OR] RewriteCond %{HTTP_HOST} ^www.abc.com$ RewriteCond %{REQUEST_URI} !subdirectory/ RewriteRule (.*) /subdirectory/$1 [L]