Dre*_*rew 32 url .htaccess mod-rewrite
我的htaccess文件中有以下代码:
# Force Trailing Slash
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^[^/]+$ %{REQUEST_URI}/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
当我去www.mydomain.com/test它将它重定向到/ test/时,这似乎工作正常.问题是,当我访问www.mydomain.com/test/another时,它不会将斜杠放在另一个上.
有没有人知道如何修改我的代码以使尾随斜杠工作无论URL多长?
谢谢!
jef*_*nes 67
基于上面的答案,答案稍微强一些:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)([^/])$ /$1$2/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
该RewriteCond会检查,以确保有一个与该名称的文件,如果没有,则执行重写规则.比拥有手动扩展列表更具前瞻性!
und*_*one 30
RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
编辑:如果你想要排除一些像php文件的请求:
RewriteCond %{REQUEST_URI} !\.(php|html?|jpg|gif)$
RewriteRule ^(.*)([^/])$ http://%{HTTP_HOST}/$1$2/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
当Death的解决方案有效时,如果您忘记将某些文件类型添加到列表中,则会很烦人.您可以执行此操作以强制所有不直接指向!-f在条件中使用的文件的URL的尾部斜杠.
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*[^/])$ http://%{HTTP_HOST}/$1/ [L,R=301]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
77652 次 |
| 最近记录: |