我有一个主域 mydomain.com 和一个子域 m.mydomain.com ,都是SSL安全的。
当我访问子域 m.mydomain.com 时,我希望在 mydomain.com/mobile.php/nb 上重定向,而不更改网址...所以网址必须保留为m.mydomain.com
以下是我的建议:
RewriteEngine on
RewriteCond %{HTTP_HOST} ^m\.mydomain\.com$ [OR]
RewriteCond %{HTTP_HOST} ^www\.m\.mydomain\.com$
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[0-9a-zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0-9]{32}\.txt(?:\ Comodo\ DCV)?$
RewriteRule ^(.*)$ "https\:\/\/mydomain\.com\/mobile\.php\/nb$1" [R=301,L]
它重定向我,但它不会保留子域名网址。
我发现的所有解决方案仅在网站不受保护(http)时才有效。
答案 0 :(得分:0)
可以,但不应该通过.htaccess文件来完成。
这通常是通过您的vhost配置文件
<VirtualHost *:80>
ServerName www.example.com
Redirect / https://secure.example.com/
</VirtualHost>
<VirtualHost _default_:443>
ServerName secure.example.com
DocumentRoot /usr/local/apache2/htdocs
SSLEngine On
# etc...
</VirtualHost>
答案 1 :(得分:0)
mod-rewrite R
标志执行从旧位置到新位置的URL的外部重定向。如果您不想重定向子域,请从RewriteRule中删除R=301
标志,并使用绝对路径而不是完整URL作为重写目标。
RewriteEngine on
RewriteCond %{HTTP_HOST} ^(www\.)?m\.mydomain\.com$ [NC]
RewriteCond %{REQUEST_URI} !^/\.well-known/cpanel-dcv/[ 0- 9a -zA-Z_-]+$
RewriteCond %{REQUEST_URI} !^/\.well-known/pki-validation/[A-F0- 9]{ 32 }\.txt(?:\Comodo\DCV)?$
RewriteRule ^(.*)$ /mobile.php/nb/$1 [L]
这会在内部将www.m.domain.com
或m.domain.com
重定向到/mobile.php/nb/
。