php - htaccess 重写 - 文件名无法识别
问题描述
这几天一直在努力,但我似乎无法弄清楚。
我在一个目录中有两个文件:
- index.php - 在新闻部分加载文章列表
- article.php - 加载文章文件本身的内容
下面,我遇到了 .htaccess 文件中 index.php 文件的第一条规则。(尝试了很多东西,包含和文件都可以,但是我这里的htaccess规则没有通过index.php。文章文件加载也很好。除了应用下面的这两行。)
链接:
domain.com/news/index/66/bass (works)
被定义为:
RewriteRule ^/?news/[\w-]+/([\w-]+)/([\w-]+)/?$ /news/index.php?news_id=$1&page_id=$1 [QSA,NC]
接下来,在该页面上,我们点击:
domain.com/news/article/66-17506/SEO-FRIENDLY-TITLE
被定义为:
RewriteRule ^/?news/[\w-]+/([\w-]+)/([\w-]+)/?$ /news/article.php?news_id=$1&page_id=$1 [QSA,NC]
在那里,我陷入了 index.php 的先前定义。我已经删除了 [L] 值并尝试了很多东西。我想只需要article.php要加载
任何帮助都会在网上节省很多文章!
解决方案
问题是用于匹配 URL 的两个正则表达式是相同的。所以任何可能与 article.php 规则匹配的东西都已经被 index.php 规则抓取了。您能否将这两个规则更改为:
RewriteRule ^/?news/index/([\w-]+)/([\w-]+)/?$ /news/index.php?news_id=$1&page_id=$1 [QSA,NC]
RewriteRule ^/?news/article/([\w-]+)/([\w-]+)/?$ /news/article.php?news_id=$1&page_id=$1 [QSA,NC]
推荐阅读
- json - Hibernate 不支持 JSON 的双向 @ManytoMany 映射?
- android - 无法解决 DataBinding 的 AcitivityMainBinding
- gstreamer-1.0 - Gstreamer 动态管道:HDMI 摄像头视频录制上的摄像头预览
- c# - 条纹每日付款和发送发票问题
- javascript - 如果我有多个要匹配的数字,我如何获得输出,仅使用 If else 语句并在正确的情况下获取输出:- Java 脚本
- java - Java IO读取流的区别
- reactjs - 如何在 react-admin 中使用 getOne 传递额外数据?
- reactjs - IF-ELSE 条件在 JSX 反应中不起作用
- reactjs - create-react-app 对无前缀 CSS 的黄金时代发出警告,如何解决?
- c++ - 我无法弄清楚那个 Bracket 构造函数在做什么?