gpt4 book ai didi

php - Apache mod_rewrite 未将表达式映射到参数

转载 作者:行者123 更新时间:2023-12-04 05:00:50 24 4
gpt4 key购买 nike

我有一个网站使用 apache mod_rewrite并且在过去 6 个月内一直在工作,没有出现任何错误。

我有以下重写规则:

RewriteRule ^products/([a-z\-]+)/$ /products.php?category=$1 [NC,L]

这是我页面中的代码 products.php
$category = $_GET['category'];

if (isset($category)) {
// do some processing here
}
else {
header("Location: /500.html");
exit;
}

符合此规则的链接示例是 /products/lighting-poles/
有谁知道为什么实际的重写仍在发生但没有映射 ([a-z\-]+)category=$1 ?

额外信息

我注意到 .htaccess主机上的文件已经注释掉了 Options +FollowSymLinks 行所以我首先尝试重新启用它只是为了让网站返回一个 apache 白屏 500错误。

更多来自 .htaccess 文件
<IfModule mod_rewrite.c>
#Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# Add a trailing slash to paths without an extension
RewriteCond %{REQUEST_METHOD} !POST
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(\.[a-zA-Z0-9]{1,5}|/)$
RewriteRule ^(.*)$ $1/ [L,R=301]

# other rules including problem rule here

</IfModule>

最佳答案

这听起来像一个多 View 问题。 Multiviews 是一个内容协商的东西,如果它被打开,它会在 URL 文件映射管道中尝试一些不同的额外事情,以尝试找到映射到 URL 的文件。这里有一个 URL,如 /products/blah ,但是,您有一个名为 products.php 的文件,所以多 View 可能会尝试映射 products/products.php/blah .因此完全绕过重写规则,你看不到 category参数。

选项在哪里,请尝试添加:

Options -Multiviews

关于php - Apache mod_rewrite 未将表达式映射到参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16181311/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com