向URL添加尾随斜杠 - 开发和生产相同的规则

时间:2013-11-01 19:56:21

标签: regex .htaccess url mod-rewrite trailing-slash

我花了一些时间尝试使用不同的方法为我的网址添加尾部斜杠,例如:

Add Trailing Slash to URLs

在我的生产网站上,这可以正常使用此规则:

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

但它不适用于我的本地开发设置。我在localhost:9090运行本地网站,因此当我转到localhost:9090/users/new/之类的网址时,我收到500内部服务器错误。

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

制定适用于开发和生产的规则的最佳方法是什么?

注意

经过@anubhava的一些很好的建议后,我重新组织了我的规则,并针对现有需求找到了一些更好的规则。我最终得到了一个新的PHP扩展规则和他的建议,它现在正在localhost和生产。

1 个答案:

答案 0 :(得分: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缓存问题。