首页 > 解决方案 > htaccess 重写 - 文件名无法识别

问题描述

这几天一直在努力,但我似乎无法弄清楚。

我在一个目录中有两个文件:

  1. index.php - 在新闻部分加载文章列表
  2. 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要加载

任何帮助都会在网上节省很多文章!

标签: phpmysql.htaccessurl-rewritingphp-7

解决方案


问题是用于匹配 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]

推荐阅读