我找到了一个解决方案,使用 AbsoluteZero 提供的信息以及随着解决方案越来越近而在屏幕右侧弹出的其他线程。
这是对我有用的代码...
Options -Multiviews -Indexes +FollowSymLinks
RewriteEngine On
RewriteBase /
DirectorySlash Off
# remove trailing slash
RewriteRule ^(.*)\/(\?.*)?$ $1$2 [R=301,L]
# translate PATH_INFO information into a parameter
RewriteRule ^(.*)\.php(\/)(.*) $1.php?$3 [R=301,L]
# rewrite /dir/file?query to /dir/file.php?query
RewriteRule ^([\w\/-]+)(\?.*)?$ $1.php$2 [L,T=application/x-httpd-php]
我从 StackOverflow 上的另一篇文章中删除了斜杠。但是,即使在删除尾部斜杠之后,重写规则也没有考虑到有人在 .php 文件之后附加看起来是有效的信息
(例如:mysite.com/index.php/somethingelse)
我的目标是要么删除“/somethingelse”,要么使其无害。PATH_INFO 规则在 .php 文件之后定位一个“/”,并将从该点向前的所有其他内容转换为查询字符串(通常会被 PHP 文件忽略)。