【发布时间】:2012-12-27 20:38:25
【问题描述】:
我使用 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 的 URL 重写。
我想改写成斜线
- 我想从重写的 URL 重定向到结束斜杠,就像上面的代码一样。
- 我不想从真实文件中结束斜线,例如 jquery.js、style.css。
示例(2012 年 12 月 21 日更新)
-
/category/test应该是/category/test/ -
http://www.test.com/myjsfile.js应该是http://www.test.com/myjsfile.js
问题
- 如果我使用上面未注释的代码,它会在所有 url 中添加一个结尾斜杠,包括 javascript 文件和 css 文件。
- 我只希望重写后的网址以斜杠结尾。
问题
可以用 htaccess 完成吗?如果有怎么办?
【问题讨论】:
-
所以您想将
/not/real/path的请求重定向到/not/real/path/并且您想在脚本和样式等真实文件上添加斜杠?你的第二个子弹令人困惑。您“不想从真实文件中删除结尾斜杠”?我没有看到任何添加斜杠的地方。我也尝试了这些规则,但我没有看到斜杠被添加到我的脚本和 css 文件中。仅限于实际不存在的 URI。 -
是的,你是对的。第二个子弹不正确。我已经更正了它,甚至添加了一个示例。
-
就像我提到的,我取消注释该行,它对我有用。真实文件不会受到影响,因为上述 2 个条件表示“only 应用规则,如果请求 not 用于真实文件或目录”。我想您可以尝试将其更改为
RewriteRule ^(.*[^/])$ /$1/ [L,R=301](我过去使用过的),但这本质上是一样的
标签: .htaccess redirect url-rewriting