1 个文件夹的 htaccess url 重写

1 个文件夹的 htaccess url 重写

我的 .htaccess 文件除了 1 个特定文件夹外,其他都运行正常。结果http://www.mydomain.com/administration/index.php意外地转到 401 错误页面,而不是index.php从管理文件夹加载。

因此,对于管理文件夹,我希望:

1)始终将管理文件夹的 http 替换为 https(对于其他文件夹,.htaccess 的最后一部分可以正常工作)。

2)如果 URL 转到管理文件夹,则不要重定向 URL。

3) 对于管理文件夹,1)和2)之后的所有规则均无效。

我尝试将 2) 和 3) 添加到 .htaccess。因此,现在我的 .htaccess 文件如下所示:

#adds www - always, for any url, for any folder
RewriteCond %{HTTP_HOST} !^www.mydomain.com$
RewriteRule ^(.*)$ http://www.mydomain.com/$1 [R=301,L]

#special rules for administration folder only - set https if not https
RewriteCond %{REQUEST_URI} ^/administration
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [R,L=301]

#all requests to administration folder should stop here
RewriteCond %{REQUEST_URI} ^/administration
RewriteRule ^ - [L]

#some rules below - not for administration folder

但是,如果我输入任何内容,它都会转到 401 错误页面mydomain.com/administration/index.php,尽管我希望它转到https://www.mydomain.com/administration/index.php。其余一切都运行正常。

如果我删除 .htaccess,它会直接转到以下任何一个

http://www.mydomain.com/administration/index.php
https://www.mydomain.com/administration/index.php

沒有問題。

先感谢您。

答案1

401 响应意味着Authorization required浏览器要求您输入用户名和密码。它们不是由 mod_rewrite 控制的,而是由授权模块

Auth*您的 .htaccess 文件或主 Apache 配置中必须有一些指令。

我怀疑授权模块是在重写模块之前触发的,因此在处理任何重写之前您必须拥有一个有效的用户。

当您提供有效的用户名和密码时您会得到什么?

相关内容