繁体   English   中英

Apache 重写规则无法正常工作

[英]Apache Rewrite Rule not working properly

一些规则可以正常工作,并且所有内容都在 conf 文件中正确设置以允许重写正常工作。 但是有些规则失败了,或者可能是 URL 字符串没有达到该规则并且已经被重定向。

就像这条规则:

RewriteRule coach/(.*)$ coach.php?coach=$1

如果我调用 URL localhost/coach/fitness它会被重定向到localhost/coach.php并且在 PHP 文件中没有收到 GET 参数。

现在,如果我将此规则更改为

RewriteRule coach/(.*)$ cp.php?coach=$1

而且从更改文件名coach.php在我的目录,以cp.php然后它完美罚款给定的URL,并收到GET PARAM。

所以问题是,如果具有 URL 字符串名称的文件存在,它只会被重定向到该文件,而不会应用任何重定向规则。

添加此项以禁用多视图:

Options -MultiViews

mod_negotiation 上Apache 文档描述了 Multiviews Option 在启用时的作用:

如果服务器收到对 /some/dir/foo 的请求并且 /some/dir/foo 不存在,则服务器读取目录以查找所有名为 foo.* 的文件,并有效地伪造一个命名所有这些文件的类型映射文件,如果客户端按名称要求其中之一,则为它们分配相同的媒体类型和内容编码。 然后它会选择最符合客户要求的文件,并返回该文件。

用:

Options -MultiViews
RewriteRule coach/(.*)/?$ coach.php?coach=$1 [NC,L]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM