我需要对htaccess中的特定重定向的一些帮助。这不是简单的“ 力尾斜杠”。
所以我的问题是将所有不带斜杠的URL重定向到一个斜杠。我使用以下mod_rewrite规则完成此操作:
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !(.*)/$
RewriteCond %{REQUEST_FILENAME} !\.(gif|jpg|png|jpeg|css|js|xml|php)$ [NC]
RewriteRule ^(.*)$ https://%{HTTP_HOST}/$1/ [R=301,L]
但是这样做有一个很大的问题:如果我为不存在的 URL 触发并且没有结尾斜杠,则Apache会触发404错误,但对于使用TRASHLING SLASH不存在的URL 。因此,首先重定向为 301 ,然后重定向为404。这似乎没有任何意义。
我该如何解决?
答案 0 :(得分:0)
首先测试存在(使用[OR]),然后测试不存在:
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteCond %{REQUEST_FILENAME} !\.
RewriteRule !/$ %{REQUEST_URI}/ [NE,R=301,L]