你实际上有两个问题。。。
-
MultiViews
(mod_协商的一部分)被启用,正是这个服务
products.php
.
-
你的
RewriteRule
图案
不正确,与请求的URL不匹配。
Options +FollowSymLinks +MultiViews
你需要禁用
多视图
(您已经明确启用了它)。正是多视图(mod_协商的一部分)服务于您的客户
产品。php
文件(没有任何URL参数),而不是后面的mod_rewrite指令。多视图本质上允许无扩展的URL,只需很少的努力,但是,它可能会导致意外的冲突(使用mod_rewrite)——如本例所示。
你的
重写规则
指令实际上什么都没做。如果
.htaccess
文件位于文档根目录中,然后
重写规则
图案
^([0-9]+)(?:/([^/]*))?/?$
与请求的URL不匹配(
/products/123/title-of-this-product
),因此该指令实际上根本没有被处理(尽管多视图仍然会覆盖该指令,即使它被处理)。
试着这样做:
# Disable MultiViews
Options +FollowSymLinks -MultiViews
RewriteEngine On
RewriteRule ^products/([0-9]+)(?:/([^/]*))?/?$ products.php?id=$1&title=$2 [L,NC]
你失踪了
products
从与
重写规则
图案
没有
products/
在正则表达式开始时,它只会在您处于
/products/
子目录,即。
/products/.htaccess
这个
重写规则
指令与
.htaccess
文件本身。