带有查询字符串的 RewriteRule 被重写为 /param/param/
RewriteRule with query string gets rewritten to /param/param/
我有这个重写规则:
RewriteRule ^gallery/([^/]+)/?$ /gallery.php?title= [L]
但是,当导航到 gallery/a/ 时,内部重定向是:
gallery.php/a //(instead of: gallery.php?title=a)
什么会导致这种行为?
选项 MultiViews
可能是这里的罪魁祸首。选项 MultiViews
由在 mod_rewrite
之前运行的 Apache's content negotiation module
使用,并使 Apache 服务器匹配文件的扩展名。所以 /file
可以在 URL 中,但它会服务于 /file.php
.
使用 .htaccess 顶部的这一行将其关闭:
Options -MultiViews
我有这个重写规则:
RewriteRule ^gallery/([^/]+)/?$ /gallery.php?title= [L]
但是,当导航到 gallery/a/ 时,内部重定向是:
gallery.php/a //(instead of: gallery.php?title=a)
什么会导致这种行为?
选项 MultiViews
可能是这里的罪魁祸首。选项 MultiViews
由在 mod_rewrite
之前运行的 Apache's content negotiation module
使用,并使 Apache 服务器匹配文件的扩展名。所以 /file
可以在 URL 中,但它会服务于 /file.php
.
使用 .htaccess 顶部的这一行将其关闭:
Options -MultiViews