子域名重定向使用htaccess以及保持网址(Redirect Subdomain Using ht

2019-06-27 01:45发布

我已经搜查,而我发现很多接近的线程,没有一个是正是我期待的...

在我的网站,说example.com,我创建了子域secure.example.com

该子站点有SSL。

我想要做的就是将请求重定向到https://secure.example.com/path/同时保持网址显示为www.example.com/path/ https://secure.example.com/path/

注意subdomain.example.com的目的是为了使SSL重定向上方将需要使用SSL工作

我想在htaccess的使用一些其他的重定向:1)非www重定向到www忽略子域(所以secure.example.com不会成为www.secure.example.com)2)重定向到的index.php / 3),以及最后但并非最不重要的,力上secure.example.com SSL

此外,购物车软件具有功能性和SEO额外的htaccess报表如下图所示。

我现在的根htaccess的:

# Prevent Directoy listing 
Options -Indexes

# Prevent Direct Access to files
<FilesMatch "\.(tpl|ini|log)">
 Order deny,allow
 Deny from all
</FilesMatch>

# Turn Rewrite Engine On
RewriteEngine On

## index.php to root
Options +FollowSymlinks
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
RewriteRule ^index\.php$ http://www.example.com/ [R=301,L] 

## non-www to www ignore subdomains
RewriteCond %{HTTP_HOST} ^example.com [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L]

RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L]
RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css)
RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA]

Answer 1:

好了,专门为URL https://secure.example.com/path/显示在发现内容http://www.example.com/path/ ,有两件事情,你可以做。 最好的事情是,如果2个区来自同一个文档根目录提供服务:

它们是相同的主机和同一个文档根目录上。 子域是字​​面上根设置与一个子域下的子文件夹。 从我的主机的帮助,我们现在把它妥善解决并安装了SSL。

子目录可能是一个问题,因为它可能不能够改写自己的文档根目录中。 例如:

  • - >文档根
  • www.example.com - > /路径/到/ htdocs中
  • secure.example.com - > /路径/到/ htdocs中/安全

如果你有一个.htaccess文件/path/to/htdocs/secure改写为请求https://secure.example.com/ 。 这里的问题是,你需要重写父目录,和Apache不会让你做到这一点。 如果它是周围的其他方法,你可以重写的请求http://www.example.com//secure 。 另外,如果两个域有相同的文档根目录,你也可以重写。 但如果安全是一个子目录到www的文档根目录。

我的主人说,mod_proxy的安装。 我的Apache配置显示了这些安装:proxy_module(静态)proxy_connect_module(静态)proxy_ftp_module(静态)proxy_http_module(静态)proxy_ajp_module(静态)proxy_balancer_module(静态)

这意味着你至少可以使用P重写标志将请求发送关闭以mod_proxy的,所以你可以做这样的事情:

RewriteEngine On
RewriteRule ^path/$ http://www.example.com/path/ [L,P]

在你secure.example.com的文档根目录htaccess文件。 只会委托书特别的URI /path/ ,而不是像什么/path/foo/bar.html 。 如果你想要的一切开始/path/ ,那么你就可以匹配反对:

RewriteRule ^path/(.*)$ http://www.example.com/path/$1 [L,P]

如果有重定向问题,你可能要诉诸使用ProxyPass而不是:

ProxyPass / http://www.example.com/
ProxyPassReverse / http://www.example.com/

它做同样的事情,除了它重写位置标头,以便重定向也得到代理。



文章来源: Redirect Subdomain Using htaccess and Keep URL