Есть ли способ использовать htaccess, чтобы указать подкаталогу в качестве корня для всего сайта?
Например, если у меня был сайт под http: // localhost / testsite /, и в его файле index.php у меня была ссылка на таблицу стилей, используя следующий код.
<link rel="stylesheet" type="text/css" href="/css/layout.css" />
Могу ли я затем загрузить этот файл /localhost/testsite/css/layout.css?
Чтобы обойти эту проблему, я установил субдомены localhost для каждого сайта, который, хотя работает, не идеален.
Большое спасибо.
Если вы хотите сохранить часть 'href = "/ css / layout.css", то да, вы можете настроить правило перезаписи. Вам просто нужно быть осторожным, чтобы не перенаправлять ничего, начиная с / testsite (или вы закончите цикл).
Например (в корневом каталоге .htaccess):
RewriteEngine On RewriteCond %{REQUEST_URI} !^/testsite/.*$ RewriteRule ^(.*)$ /testsite/$1 [QSA,L]
Там вы сможете получить доступ к вашему файлу layout.css либо из:
Http: //localhost/testsite/css/layout.css
или
Http: //localhost/css/layout.css
Конечно, все относительные URI (как ваши) относятся к базовому URI, который по умолчанию является URI документа:
http://localhost/testsite/index.php
Вам нужно только указать, какую часть добавить:
<link rel="stylesheet" type="text/css" href="./css/layout.css" /> ^ ` see this dot
Пример:
Base URI :: http://localhost/testsite/index.php Relative URI :: ./css/layout.css Result :: http://localhost/testsite/css/layout.css
Если вам нужно, чтобы это было более модульным, есть несколько способов сделать это. Один из них – установить базовый URI явно внутри документа HTML (см. <base>
).
Другим является разрешение ссылок относительно серверной стороны на основе URI запроса и корневого пути вашего сайта. См. Этот ответ для примера.