Чи можна використовувати .htaccess для перезапису піддомену в каталог?
Приклад:
показує зміст
Чи можна використовувати .htaccess для перезапису піддомену в каталог?
Приклад:
показує зміст
Відповіді:
Спробуйте помістити це у свій файл .htaccess:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.com
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]
Для більш загального правила (яке працює з будь-яким субдоменом, а не тільки sub
), замініть останні два рядки таким:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.com
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]
http://test.domain.com/subdomains/test/
, коли я лише хочу, щоб це було показаноhttp://test.domain.com/
test.domain.com/subdomains/test
- можливо, тут відбувається щось інше. Чи можете ви додати RewriteBase /
відразу після RewriteEngine on
? Крім того, якщо ви хочете, щоб він продовжував відображатися, test.domain.com
вам доведеться використовувати mod_proxy та [P]
прапор.
Я не фахівець mod_rewrite, я часто борюся з цим, але я робив це на одному зі своїх сайтів, можливо, для цього вам знадобляться інші прапори тощо. Я використовую це:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]
Будь-які інші правила перезапису для решти веб-сайту повинні піти згодом, щоб запобігти їхньому втручанню в переписування вашого субдомену.
.htaccess
заходить на цю сторінку (як я це зробив), окрім створення власне .htaccess
файлу, щоб він набув чинності, вам потрібно встановити AllowOverride
у своїх VirtualHost
налаштуваннях ( stackoverflow.com/a/22819550/1657502 ) , увімкніть rewrite
модуль Apache, а потім перезапустіть Apache ( stackoverflow.com/a/5758551/1657502 )
www.
префікс, мабуть, найкраще підтримується через переспрямування, ніж перезапис.
Ви можете використати таке правило в .htaccess, щоб переписати субдомен у підпапку:
RewriteEngine On
# If the host is "sub.domain.com"
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
# Then rewrite any request to /folder
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
Пояснене пояснення:
RewriteEngine on
У наведеному вище рядку сервер повідомляє про те, щоб увімкнути механізм для переписування URL-адрес.
RewriteCond %{HTTP_HOST} ^sub.domain.com$ [NC]
Цей рядок є умовою для RewriteRule, де ми збігаємося з хостом HTTP, використовуючи шаблон регулярного виразу. Умова говорить, що якщо хостом є sub.domain.com, то виконайте правило.
RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]
Правило відповідає http://sub.domain.com/foo і внутрішньо перенаправляє його на http://sub.domain.com/folder/foo .
Замініть sub.domain.com на ваш субдомен і папку з ім'ям папки, на яку ви хочете вказати свій субдомен.
У мене була та ж проблема, і я знайшов детальне пояснення на веб-сайті http://www.webmasterworld.com/apache/3163397.htm
Моє рішення (вміст субдоменів повинен знаходитись у папці з назвою sd_subdomain
:
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.com
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]
Це перенаправляє до тієї самої папки на субдомен:
RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.com$ [NC]
RewriteRule ^(.*)$ http://domain\.com/subdomains/%1
Спробуйте розмістити цей файл .htaccess у папці субдомену:
RewriteEngine On
RewriteRule ^(.*)?$ ./subdomains/sub/$1
Він переспрямовує на http://domain.com/subdomains/sub/ , коли ви хочете, щоб він відображав лише http://sub.domain.com/
Перенаправити каталог піддоменів:
RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]
Для будь-якого запиту на субдомен використовуйте це:
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.band\.s\.co
RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.co
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+)
RewriteRule ^(.*)$ /%1/$1 [L]
Просто створіть папку, таку ж, яка вам потрібна піддоменне ім’я. Папка повинна існувати так: domain.com/sub для sub.domain.com .
http://test.domain.com
, URL-адреса перенаправляє менеhttp://test.domain.com/subdomains/test/
. Чи можливо, не показуючи/subdomains/test/
кінець?