我搜索过,当我发现很多线程关闭时,没有一个是我正在寻找的......
在我的网站上,比如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
此外,购物车软件还有其他功能和搜索引擎优化的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]
答案 0 :(得分:1)
嗯,特别是网址https://secure.example.com/path/
显示在http://www.example.com/path/
找到的内容,您可以做两件事。最好的办法是,如果2个域名来自同一个文档根目录:
它们位于同一主机和同一文档根目录中。子域名实际上是根域设置下的子文件夹,具有子域名。在我的主机的帮助下,我们现在可以正确解析并安装SSL。
子目录可能有问题,因为它可能无法重写其自己的文档根目录的 out 。例如:
如果/path/to/htdocs/secure
中有.htaccess文件,则会重写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/
它做同样的事情,除了它重写位置标题,所以重定向也得到代理。