【发布时间】:2021-10-13 16:58:46
【问题描述】:
我的代码如下,前两条规则运行良好,但我无法使用第三条(检查其类别,例如 /some-folder)页面是否应由 category.php 文件提供。有人可以帮忙吗?
Options +FollowSymLinks
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-l
# WORKING - Check if its a product eg. /some-folder/some-product.html
RewriteRule ^/?([^/]+)/.+\.html$ product.php [QSA,L]
# WORKING - Check if its a page eg. /some-page.html
RewriteRule ^/?[^/]+\.html$ page.php [QSA,L]
# NOT WORKING - Check if its category eg. /some-folder
RewriteRule ^/?[^/]+\$ category.php [QSA,L]
【问题讨论】:
-
有趣的是,您接受了大约一个月前提出的问题中建议的重写规则,但未能在 每个 规则之前添加这些条件。为什么? stackoverflow.com/questions/69190732/… 请理解,这些条件仅适用于它们之前的单一规则,而不适用于任何其他规则。您应该查看文档以了解此类详细信息。
-
尝试在最后一条规则中使用
^/?[^/]+/?$作为匹配模式。问题很可能是在尝试的规则中转义了$。 -
澄清一下,“类别”
/some-folder不映射到文件系统上的物理目录吗?提出此请求时实际发生了什么? “不工作”到底是什么意思。
标签: apache .htaccess mod-rewrite