我的mod_rewrite规则没有按预期重写


My mod_rewrite rules aren't rewriting as expected

在S.O.上找不到这个问题的答案(如果重复的话很抱歉)

(localhost)/MySites/. htaccess:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) compiler.php?id=$1

请求//localhost/MySites/Example.com/在我的浏览器上工作。

请求//localhost/MySites/Example.com(没有尾斜杠' / ')重定向(地址栏实际更改)到//localhost/MySites/Example.com/?id=Example.com与尾斜杠/?id=Example.com

它为什么这样做?违背了"漂亮的url"的目的。

您可以使用:

DirectorySlash Off 
DirectoryIndex index.php index.html 
RewriteEngine on 
RewriteBase /MySites/ 
# add a trailing slash for directories 
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ /$1/ [L,R=301]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule (.*) compiler.php?id=$1 [L,QSA]