htaccess重写-无法识别文件名

时间:2018-08-12 21:53:58

标签: php mysql .htaccess url-rewriting php-7

花了几天的时间,但我似乎无法弄清楚。

我在目录中有两个文件:

  1. index.php-在新闻版块中加载文章列表
  2. article.php-会在文章文件本身中加载内容

下面,我陷入了.htaccess文件中index.php文件的第一条规则。 (经过很多尝试,includes和files都可以,但是我在这里拥有的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

任何帮助都会在网上保存很多文章!

1 个答案:

答案 0 :(得分:1)

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