1

我花了一些时间尝试不同的方法来向我的 URL 添加尾部斜杠,例如这个:

在 URL 中添加斜杠

在我的生产站点上,这适用于以下规则:

RewriteEngine ON
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*[^/])$ /$1$2/ [R=301,L]

但它不适用于我的本地开发设置。我在 上运行本地站点localhost:9090,因此当我访问诸如localhost:9090/users/new/500 内部服务器错误之类的 URL 时。

我尝试过使用类似的规则%{HTTP_POST},但这也不起作用。我觉得我错过了一些东西,并且在网上搜索一直指向我已经尝试过的规则。

拥有适用于开发和生产的规则的最佳方式是什么?

笔记

在@anubhava 提供了一些很好的建议后,我重新组织了我的规则,并为现有需求找到了一些更好的规则。我最终选择了一个新的 PHP 扩展规则和他的建议,现在它在localhost生产和生产中都有效。

4

1 回答 1

1

您的正则表达式中没有$2

你可以试试这个代码:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.+?[^/])$ /$1/ [R=302,L]

# hiding .php
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.+?)/?$ /$1.php [L]

在新的浏览器中尝试一下,以避免 301 缓存问题。

于 2013-11-01T20:12:08.880 回答