【发布时间】:2019-04-10 10:09:19
【问题描述】:
我正在建立一个新网站,并想用 url 中的参数重写一些文件。
该网站现在没有上线,不幸的是我在 mod_rewrite 方面没有很多经验。
那我的问题是什么:
我有两个文件:category.php 和 single.php
在我的索引上,我有一个通过 url 参数引用所有类别的菜单。
例如,在 sitename.com/index.php 上,您会找到以下链接:
sitename.com/category.php?c=First
sitename.com/category.php?c=Second
sitename.com/category.php?c=第三
等等
在 sitename.com/category.php?c=首先,例如,您会找到首先引用类别并链接到的所有帖子的列表:
sitename.com/single.php? c=Frist&name=name1
sitename.com/single.php?c=Frist&name=name2
sitename.com/single.php?c=Second&name=name3
sitename.com/single.php?c=Third&name=name4
等等
现在我尝试将网址重写为以下结构:
sitename.com/category.php?c=First => sitename.com/First
sitename.com/category.php?c=Second=> sitename.com/Second
sitename.com/single.php?c=Frist&name=name2 =>sitename.com/First/name2
sitename.com/single.php?c=Second&name=name3 =>sitename.com/Second/name3
我使用了以下代码
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ categroy.php?c=$1 [L,QSA]
RewriteRule ^(.*)/(.*)$ single.php?c=$1&name=$2 [L,QSA]
</IfModule>
每个 RewriteRule 都适用于它自己,但在一起我不会得到预期的结果。
所以我现在尝试了几天,但我不明白。
所以希望这里有人可以提供帮助
非常感谢
【问题讨论】:
-
颠倒规则顺序。
(.*)匹配 所有内容,包括斜线,所以当然已经捕获了First/name2。
标签: php apache .htaccess mod-rewrite