Mod rewrite mod_rewrite添加尾部斜杠时出现问题

Mod rewrite mod_rewrite添加尾部斜杠时出现问题,mod-rewrite,Mod Rewrite,我正在使用mod_rewrite将友好的URL(site.com/page/)转换为脚本友好的(?page=page),除了一件事之外,这一切都工作得很好。如果你在URL上去掉尾随的斜杠,它就会断开并得到一个404 我尝试在中使用该解决方案(稍微修改),但它似乎不起作用。这里是我的.htaccess重写,仅供参考 <IfModule mod_rewrite.c> RewriteEngine On Options +FollowSymLinks Options +Indexes

我正在使用mod_rewrite将友好的URL(site.com/page/)转换为脚本友好的(?page=page),除了一件事之外,这一切都工作得很好。如果你在URL上去掉尾随的斜杠,它就会断开并得到一个404

我尝试在中使用该解决方案(稍微修改),但它似乎不起作用。这里是我的.htaccess重写,仅供参考

<IfModule mod_rewrite.c>
RewriteEngine On

Options +FollowSymLinks  
Options +Indexes  
RewriteEngine On
RewriteBase /

#force trailing slashes on real directories
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [R]
RewriteRule ^images - [L]
RewriteRule ^([^/]*)/$ /?page=$1%{QUERY_STRING} [L]

</IfModule>

重新启动发动机
选项+FollowSymLinks
选项+索引
重新启动发动机
重写基/
#在实际目录上强制使用尾部斜杠
RewriteCond%{REQUEST_FILENAME}-d
重写cond%{REQUEST_URI}!(.*)/$
重写规则^(.*)$$1/[R]
重写规则^images-[L]
重写规则^([^/]*)/$/?页面=$1%{QUERY_STRING}[L]

因此,您希望在目录测试中保持/跳过—我猜是这样的—然后您需要修改:

RewriteRule ^([^/]*)/$ /?page=$1%{QUERY_STRING} [L]
分为两种情况-处理/和非斜杠情况-或仅一种

RewriteRule ^([^/]*)/?$ /?page=$1%{QUERY_STRING} [L]
假设这就是你想要的。你可能想让它更像我

RewriteRule ^([^/.]+)/?$ /?page=$1&%{QUERY_STRING} [L]

我还添加了一个-,因为我猜您也需要它。

太棒了,谢谢。似乎最好的答案通常是最简单的。是的,我刚刚忘了添加符号,还没有到测试任何其他参数的地方,再次感谢:)嗯-小警告-HTML转义符似乎在“.”点前面掉了“\”反斜杠。这是要防止的,一些东西。在您的特定情况下,-a\w或[a-zA-Z]而不是^negate实际上可能更安全。