在我的网站中,我有一个名为as.my
的目录,该目录实际上包含我网站上名为my.example.com
的子域的文件。如果有人访问www.example.com/as.my
,则会显示子域名。如果可能,我想要做的是将以as.my
开头的任何网址重定向到子域名,并从网址中删除as.my
。这可能吗?
我已经能够使用
重定向文件夹了Redirect Permanent /as.my http://my.example.com
但是,如果有人要访问http://www.example.com/as.my/test/
,那就无法正常工作。我也尝试过使用
RewriteRule ^as.my(/.*)$ http://my.example.com/$1 [L,NC,QSA,R=301]
但这也无法正常工作。有没有可用的方法可以用来完成我正在尝试的方法? URL的行为如下:
http://www.example.com/as.my/ => http://my.example.com/
http://www.example.com/as.my/test/ => http://my.example.com/test/
感谢您的帮助!
编辑:这是我的目录布局,以及每个文件中的htaccess文件。
主目录包含example.com
的所有文件,以及目录as.my
,其中包含子域my.example.com
的所有文件。 htaccess
的{{1}}文件如下:
example.com
ErrorDocument 400 /pg.errors.php?eC=400
ErrorDocument 401 /pg.errors.php?eC=401
ErrorDocument 403 /pg.errors.php?eC=403
ErrorDocument 404 /pg.errors.php?eC=404
ErrorDocument 500 /pg.errors.php?eC=500
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
# Add WWW
RewriteCond %{HTTP_HOST} !^(my|www).
RewriteRule ^(.*)$ http://www.%{HTTP_HOST}/$1 [L,R=301]
# Trailing Slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ http://%{HTTP_HOST}/$1/ [L,R=301]
# URL Rewrites (There are a few like this, but they're all the same)
RewriteRule ^about/$ about.php [L,NC,QSA]
RewriteRule ^contact/$ contact.php [L,NC,QSA]
</IfModule>
<Files .htaccess>
Order Allow,Deny
Deny From All
</Files>
目录中的htaccess
文件如下:
as.my
答案 0 :(得分:0)
You don't actually need mod_rewrite
to do this.你正在使用Redirect Permanent。
RedirectMatch permanent ^as.my http://my.example.com/
请注意使用RedirectMatch
代替Redirect
。根据{{3}},
此指令等效于Redirect,但使用正则表达式,而不是简单的前缀匹配。
这意味着匹配将全局发送到整个请求URI并将所有这些重定向到子域。
答案 1 :(得分:0)
在跟踪斜杠规则后的/as.my/.htaccess
中有此规则:
RewriteEngine On
RewriteBase /as.my/
RewriteCond %{HTTP_HOST} !^my\.example\.com$ [NC]
RewriteRule ^(.*)$ http://my.example.com/$1 [L,NC,NE,R=301]