我正在尝试使用.htaccess实现以下目标
1-将所有http请求转换为https 2-捕获任何不存在的路径,并重定向到现有路径,以某种方式(作为查询字符串,哈希,通过信封或post变量)传递不存在的路径进行解释。 3-可以针对特定文件夹同时执行上述两项操作。
当前,我通过将不存在的路径作为散列传递来使#2工作,该散列由客户端脚本解释:
RewriteEngine On
RewriteBase /SomeSubFolder/
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ \#$1 [L,R=301,NE]
它在一定程度上起作用 http://[somedomain.com]/[ExistingPath]/[NonExistingPath]
成为
http://[somedomain.com]/[ExistingPath]/#[NonExistingPath]
(即不存在的路径变成标记在现有路径上的哈希,随后通过JS进行解释)
如果有一种不太古怪的方式做到这一点,那么我会不知所措。
到目前为止,我无法将http请求转换为https,同时无法保护上述功能。
答案 0 :(得分:1)
您可以使用以下内容:
RewriteEngine On
RewriteBase /SomeSubFolder/
#http to https
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [NE,L,R]
#redirect non-existant path
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ \#$1 [L,R=301,NE]
确定规则可以正常使用后,请将https规则中的R
更改为R=301
,以使重定向永久化(浏览器和搜索引擎已缓存)。