htaccess - URL重写 - 删除斜杠,但不删除文件

时间:2012-12-20 14:49:42

标签: .htaccess redirect url-rewriting

我使用PHP。

正在运行的htaccess文件

RewriteEngine On
RewriteBase /folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#RewriteRule .*[^/]$ $0/ [L,R=301]
RewriteCond $1 !^(index\.php)
RewriteRule ^(.+)$ index.php/$1 [L]

用#注释查看行。取消注释后,它会向斜杠添加重定向。我使用toroPHP进行网址重写。

我想重写为结束斜杠

  • 我想重定向到重写网址的斜杠,就像上面的代码一样。
  • 我不想从真实文件中结束斜杠,比如jquery.js,style.css。

示例(已更新2012-12-21)

  • /category/test应为/category/test/
  • http://www.test.com/myjsfile.js应为http://www.test.com/myjsfile.js

问题

  • 如果我使用上面的代码取消注释,它会为所有网址添加一个结尾斜杠,包括javascript文件和css文件。
  • 我只希望重写的网址以斜线结尾。

问题

可以用htaccess完成吗?如果是这样的话?

1 个答案:

答案 0 :(得分:0)

htaccess几乎是正确的。但是REQUEST_FILENAME需要在每个重写规则之前,而不是在第一个之前。

此作品

RewriteEngine On
RewriteBase /folder/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .*[^/]$ $0/ [L,R=301]

RewriteCond $1 !^(index\.php)
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)$ index.php/$1 [L]