Apache 使用.htaccess重写时保留路径

Apache 使用.htaccess重写时保留路径,apache,.htaccess,redirect,mod-rewrite,Apache,.htaccess,Redirect,Mod Rewrite,我最近将我的网页从HTTP移动到HTTPS,现在我得到了一些与以前不同的东西 我遇到的问题是,当用户试图转到: http://example.com/i/它们被重定向到:https://www.example.com/i/image.php?id=。这是“正确的”,但不是我想要的。我希望链接保持在/I/,而不管用户来自http或https 我有两个.htaccess文件,用于控制网页上的重定向 第一个.htaccess(根目录): Second.htaccess(映像目录-/i): 在我添加第一

我最近将我的网页从HTTP移动到HTTPS,现在我得到了一些与以前不同的东西

我遇到的问题是,当用户试图转到:
http://example.com/i/
它们被重定向到:
https://www.example.com/i/image.php?id=
。这是“正确的”,但不是我想要的。我希望链接保持在
/I/
,而不管用户来自http或https

我有两个.htaccess文件,用于控制网页上的重定向

第一个.htaccess(根目录):

Second.htaccess(映像目录-/i):

在我添加第一个将用户从HTTP重定向到HTTPS的.htaccess文件之前,这个重定向工作得很好,但现在它似乎被破坏了

我对htaccess文件不太熟悉,所以我希望有人能帮我找回干净的URL。:)

更新答案-->再次更新

%{REQUEST_URI}只包含URI,而不包含querystring。但它存储在另一个变量-->%{QUERY\u STRING}中,可以在其中检索

我相应地编辑了第一个.htaccess文件的代码

RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [L,R=301,QSA]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [L,R=301,QSA]
如果将第二个.htaccess文件更改为以下内容,则该文件应该是干净的:)

[p]代表“proxy”,意思是客户机将Apache视为代理(ofc,没有他的通知),因为Apache执行实际(正确)请求,而客户机只看到结果

我对你问题的新看法

RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^(.*)$ https://%2$1 [R=Permanent,L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^=]+)$ image.php?img=$1 [NC,L]

嗯,奇怪。恐怕那也不行。现在
https://example.com/i/
被重定向到
https://www.example.com/index.php
。好的,那么我要问:你想调用example.com/i/并得到example.com/i/image.php?id=作为结果,但example.com/i/仍在浏览器中?否。当我添加客户端代理属性并转到
http://example.com/i/
我被发送到
https://www.example.com/index.php
。这里有一个URL,您可以在其中看到它的运行情况:好的,它可以工作50%。:)下一个问题:当我现在转到
http://matsa.no/i/0EE8eo
我现在被发送到:
https://www.matsa.no/i/image.phpimg=0EE8eo?img=0EE8eo
因为i-htaccess中的RewriteRule似乎合适^^^您能否指定何时应用此重写?它现在起作用了吗^^@你好,菲西,恐怕不行。现在我得到一个404代码。这次哪里出错了D我还没有放弃;)请告诉我您尝试调用的模式,预期结果和实际结果是什么。THX当我添加您的更新代码(没有代理)并尝试转到例如
http://matsa.no/i/ph1Ki8
我被重定向到
https://www.matsa.no/i/image.phpimg=ph1Ki8?img=ph1Ki8
。问号似乎有问题?请注意:当我试图访问时,也发生了同样的情况:
https://www.matsa.no/i/ph1Ki8
RewriteEngine on
RewriteCond %{HTTP_HOST} !^www\.
RewriteRule ^(.*)$ https://www.%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [L,R=301,QSA]

RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI}%{QUERY_STRING} [L,R=301,QSA]
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !^/i/image.php
RewriteRule ^/i/(.*) /i/image.php?img=$1 [P,NC,L,QSA]
RewriteCond %{HTTP_HOST} ^(www\.)?(.*)$
RewriteRule ^(.*)$ https://%2$1 [R=Permanent,L,QSA]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^=]+)$ image.php?img=$1 [NC,L]