【问题标题】:RewriteRule not working重写规则不起作用
【发布时间】:2026-01-08 07:25:02
【问题描述】:

我正在尝试使用 .htaccess 创建友好的 url。我已经检查过了,如果我在我的 .htaccess 上拒绝所有内容,它不会加载证明 .htaccess 正在工作的网页。

我还验证了 mod-rewrite 模块已使用 phpinfo 在 php 上加载 问题是,当我访问 url http://128.199.62.16/web/grupo/asd/123 时,它说找不到,当我尝试使用 http://128.199.62.16/web/grupo/index.php?id=asd&description=123 时,它按预期工作

在这里你可以找到我的 .htaccess 文件内容

RewriteEngine on
RewriteRule ^web/grupo/([^/]*)/([^/]*)/$ web/grupo/index.php?id=$1&descripcion=$2
Options -Indexes
ServerSignature Off

你能帮帮我吗:D

【问题讨论】:

标签: php apache .htaccess mod-rewrite


【解决方案1】:

如果不存在此规则,则创建一个新文件/var/www/html/web/grupo/.htaccess

RewriteEngine on
RewriteBase /web/grupo/

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?id=$1&descripcion=$2 [L,QSA]

【讨论】:

  • 非常感谢。实际问题是我在组文件夹上有相同的 .httaccess。已更改,现在正在运行
【解决方案2】:

您的输入网址没有尾部斜杠,但您的规则需要一个。
我建议在斜杠后面加上一个问号,表示它是可选的。
另外,我建议使用+ 而不是* 来表示“一个或多个”而不是“零个或多个”。

RewriteRule ^web/grupo/([^/]+)/([^/]+)/?$ web/grupo/index.php?id=$1&descripcion=$2

更多参考请见:
trailing slash optional

【讨论】:

  • 改变了同样的结果......我该怎么办?