.htaccess将子域重写到目录

nlejzf6q  于 2022-11-16  发布在  其他
关注(0)|答案(9)|浏览(204)

是否可以使用.htaccess将子域重写为目录?
示例:

  • http://sub.domain.example/

显示内容

  • http://domain.example/subdomains/sub/
dfty9e19

dfty9e191#

请尝试将以下内容放入.htaccess文件:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^sub.domain.example
RewriteRule ^(.*)$ /subdomains/sub/$1 [L,NC,QSA]

对于更一般的规则(适用于任何子域,而不仅仅是sub),请将最后两行替换为:

RewriteEngine on
RewriteCond %{HTTP_HOST} ^(.*)\.domain\.example
RewriteRule ^(.*)$ subdomains/%1/$1 [L,NC,QSA]
7ivaypg9

7ivaypg92#

我不是mod_rewrite的Maven,经常和它斗争,但我已经在我的一个站点上做了这个。它可能需要其他标志,等等,取决于你的情况。我使用这个:

RewriteEngine on

RewriteCond %{HTTP_HOST} ^subdomain\.example\.com$
RewriteCond %{REQUEST_URI} !^/subdomains/subdomain
RewriteRule ^(.*)$ /subdomains/subdomain/$1 [L]

任何其他重写规则的其余部分的网站必须去之后,以防止他们干扰您的子域重写。

dohp0rv5

dohp0rv53#

您可以在.htaccess中使用以下规则将子域重写为子文件夹:

RewriteEngine On

 # If the host is "sub.domain.example"
 RewriteCond %{HTTP_HOST} ^sub.domain.example$ [NC]
 # Then rewrite any request to /folder
 RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]

逐行说明:

RewriteEngine on

上面的行告诉服务器打开重写URL的引擎。

RewriteCond %{HTTP_HOST} ^sub.domain.example$ [NC]

这一行是RewriteRule的一个条件,我们使用正则表达式模式匹配HTTP主机。条件表示如果主机是sub.domain.example,则执行规则。

RewriteRule ^((?!folder).*)$ /folder/$1 [NC,L]

该规则匹配http://sub.domain.example/foo,并在内部将其重定向到http://sub.domain.example/folder/foo
sub.domain.example替换为您的子域,并将文件夹替换为您要将子域指向的文件夹的名称。

e0bqpujr

e0bqpujr4#

我遇到了同样的问题,并在http://www.webmasterworld.com/apache/3163397.htm中找到了详细的解释
我的解决方案(子域内容应位于名为sd_subdomain的文件夹中:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteBase /

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} subdomain\.domain\.example
RewriteCond $1 !^sd_
RewriteRule (.*) /sd_subdomain/$1 [L]
b4qexyjb

b4qexyjb5#

这将重定向到子域的同一文件夹:

. http访问

RewriteCond %{HTTP_HOST} !^www\.
RewriteCond %{HTTP_HOST} ^([^\.]+)\.domain\.example$ [NC]
RewriteRule ^(.*)$ http://domain\.example/subdomains/%1
1cklez4t

1cklez4t6#

尝试将此 .htaccess 文件放入子域文件夹:

RewriteEngine On

RewriteRule ^(.*)?$ ./subdomains/sub/$1

当您只想让它显示 *http://sub.example.org/ * 时,它会重新导向至 *http://example.org/subdomains/sub/ *。

fwzugrvs

fwzugrvs7#

重定向子域目录:

RewriteCond %{HTTP_HOST} ^([^.]+)\.(archive\.example\.com)$ [NC]
RewriteRule ^ http://%2/%1%{REQUEST_URI} [L,R=301]
y0u0uwnf

y0u0uwnf8#

对于任何子域请求,请使用以下命令:

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.band\.s\.example
RewriteCond %{HTTP_HOST} ^(.*)\.band\.s\.example
RewriteCond %{REQUEST_URI} !^/([a-zA-Z0-9-z\-]+)
RewriteRule ^(.*)$ /%1/$1 [L]

只要让一些文件夹相同的子域名你需要的。文件夹必须存在这样:domain.example/sub的值。

yquaqz18

yquaqz189#

编辑文件 .htaccess

RewriteEngine On 
RewriteCond %{HTTPS} off 
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

相关问题