.htaccess HTTPS重定向而不更改网址

时间:2018-05-22 18:58:43

标签: php apache .htaccess

我有一个主域 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)时才有效。

2 个答案:

答案 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>

来源:https://wiki.apache.org/httpd/RedirectSSL

答案 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.comm.domain.com重定向到/mobile.php/nb/

相关问题