“路径格式错误” - 本地服务器无法解析使用分隔符的地址 -

问题描述 投票:0回答:1

我尝试在本地服务器上运行一个网站(可以在线运行)。该网站加载没有问题,但是当我单击某种格式的链接时,我在 X:\xampp pache\logs 中收到此错误:

访问.log

::1 - - [18/Jan/2024:14:56:53 +0100] "GET /xtc2/Agip-Novecento:::16131.html HTTP/1.1" 403 299 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

错误日志

[Thu Jan 18 14:56:53.289002 2024] [core:error] [pid 3600:tid 1880] (20024)The given path is misformatted or contained invalid characters: [client ::1:52392] AH00127: Cannot map GET /xtc2/Agip-Novecento:::16131.html HTTP/1.1 to file

当我按照X:\xampp\htdocs\xtc2\.htaccess中的规则重写链接时

  ##-- Use colon delimiter ":" for SEO-URLS (default setting)
  ##-- Categories (:::)
  RewriteRule :::([_0-9]+):([_0-9]+)\.html$ index.php?cPath=$1&page=$2 [QSA,L]
  RewriteRule :::([_0-9]+)\.html$ index.php?cPath=$1 [QSA,L]

我收到“404/禁止/您无权访问此资源。”

本地服务器:Win 10 计算机上位于本地主机端口 80 的 Apache/2.4.54 (Win64) OpenSSL/1.1.1p PHP/7.4.33 服务器。

我编辑了 htacces 并手动编辑了链接,我在不同的服务器上测试了这些链接。

.htaccess url xampp delimiter http-status-code-403
1个回答
0
投票

“问题”是您正在 Windows 服务器上测试此功能,并且

:
(冒号)不是 Windows 文件名中允许的字符。

当您向网络服务器(本例中为 Apache)发出请求时,请求将映射到文件系统。此时会出现“403 Forbidden”响应。不幸的是,

.htaccess
是在请求已映射到文件系统之后处理的,因此无法在
.htaccess
中解决。

您也许可以直接在服务器配置/

<VirtualHost>
容器中(而不是在
<Directory>
容器中)使用这些规则。但是,您的规则需要稍微修改。例如:

RewriteRule :::([_0-9]+):([_0-9]+)\.html$ /index.php?cPath=$1&page=$2 [QSA,L]
RewriteRule :::([_0-9]+)\.html$ /index.php?cPath=$1 [QSA,L]

注意 substitution 字符串上的斜杠前缀。

但是,这仍然可能无法解决问题。通常,您会“重定向”此类请求(在服务器配置中)以remove这些无效字符。

##-- Use colon delimiter ":" for SEO-URLS (default setting)

如果您想在 Windows 计算机上运行此软件,那么我建议更改 URL 中使用的(默认)分隔符。

© www.soinside.com 2019 - 2024. All rights reserved.