共享ssl 404 w /现有htaccess - 后续/ questions / 12737308 /

时间:2012-10-22 05:03:23

标签: .htaccess ssl shared-hosting

我希望问一个新问题是对现有问题进行跟进的正确方法(?) - 如果不是,请耐心等待,我对stackoverflow很新。那就是说,我指的是hide html extension + redirect .html version + special case exception

用户Jon Lin提供的htaccess到目前为止完美无缺,但现在我正在努力解决相关问题(我认为它与htaccess有关),那就是使用共享的ssl证书对于我们网站上的一个特定页面,我们称之为baz.html

由于现有/引用的htaccess,hxxp://mydomain.com/baz.html解析为hxxp://mydomain.com/baz,这很好。但是,尝试在hxxps://shared.host.com/~user/baz(.html)中使用共享ssl会导致404找不到错误。我非常肯定(我猜是这样),这是由于使用了htaccess,因为我们的主机提供的共享ssl教程几乎是不容置疑的。

此外,文档根(foo.html)在使用共享ssl访问它时显示(作为唯一的非-404),但CSS(+图像)虽然在html代码中相对链接,但是不是处理。我假设(?)这是相关的。

基本上,我想要实现的是在我们的主站点导航中链接hxxps://shared.host.com/~user/baz而不是hxxp://mydomain.com/baz来实现安全页面(与我现在对foo(.html),bar(.html)相同,仅适用于不安全的内容)

我希望我的实际问题完全可以理解(?)。我不想将我们的实际项目页面链接到不进行某种类型的自我广告。如果需要访问实际页面来回答问题,我肯定会提供一个链接(如果明确要求)

提前致谢。

1 个答案:

答案 0 :(得分:0)

您不能在共享SSL主机中使用相同的htaccess文件,因为基数不同(/~user/而不仅仅是/),这将改变所有规则本身的工作方式。因此,对于那些相同的规则,您需要考虑不同的基础。如果将这些规则放在/~user/目录中的htaccess文件中,则需要看起来像这样:

编辑:因为它们是同一个文档根目录,所以你需要复制所有规则,一个用于SSL,一个不用

RewriteEngine On

# 1. hiding the .html extensions
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/~user/%1.html -f
RewriteRule ^ /~user/%1.html [L]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(.*?)/?$
RewriteCond %{DOCUMENT_ROOT}/%1.html -f
RewriteRule ^ /%1.html [L]


# 2. 301 redirecting .html version
RewriteCond %{HTTPS} on
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /~user/([^\ ]+)\.html
RewriteCond %1 !foo$
RewriteRule ^ /~user/%1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /([^\ ]+)\.html
RewriteCond %1 !foo$
RewriteRule ^ /%1 [L,R=301]


# 3. typing /foo.html to resolve to / as well as typing /foo to resolve to / 
RewriteCond %{HTTPS} on
RewriteCond %{REQUEST_URI} ^/~user/(.*?/?)foo(\.html)?$
RewriteRule ^ /~user/%1 [L,R=301]

RewriteCond %{HTTPS} off
RewriteCond %{REQUEST_URI} ^/(.*?/?)foo(\.html)?$
RewriteRule ^ /%1 [L,R=301]

现在,/baz/baz.html重定向到SSL,您需要在域中的任何规则(RewriteEngine On下)之前添加此内容。 com 文档根(非SSL文件):

编辑:由于文档根目录是相同的,您需要添加条件以检查它是否为SSL

RewriteCond %{HTTPS} off
RewriteRule ^/?baz(\.html)?/?$ http://shared.host.com/~user/baz [L,R=301]