我希望问一个新问题是对现有问题进行跟进的正确方法(?) - 如果不是,请耐心等待,我对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)相同,仅适用于不安全的内容)
我希望我的实际问题完全可以理解(?)。我不想将我们的实际项目页面链接到不进行某种类型的自我广告。如果需要访问实际页面来回答问题,我肯定会提供一个链接(如果明确要求)
提前致谢。
答案 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]