我正在尝试从仅以某个文件扩展名.txt
结尾的网址中删除尾部斜杠。
这是完整的.htaccess文件:
RewriteEngine On
RewriteBase /
RewriteCond %{THE_REQUEST} (.*)\.txt.html
RewriteRule ^(.)\.txt.html /$1.txt [R=301,L]
RewriteCond %{THE_REQUEST} (.)\.txt
RewriteRule ^(.)\.txt $1.txt.html [L]
RewriteCond %{THE_REQUEST} (.)\.txt/
RewriteRule ^(.*)\.txt\/ $1.txt [R=301]
除了.txt/
的规则为网址添加完整路径外,一切都很好。是否可以使它与相对路径一起工作?
例如,此网址
http://test.local:8080/doc/Cons/Bo/Dwnlds/Test.txt/
转到此
http://test.local:8080/Users/dev1/Documents/96/test.org/doc/Cons/Bo/Dwnlds/Test.txt
。
如何解决此问题?
答案 0 :(得分:1)
您需要向目标添加一个前导斜杠,因为(.*)
将不包含它,因此结果是奇怪的文件系统路径:
RewriteRule ^(.*)\.txt\/ /$1.txt [R=301]
实际上是因为RewriteRules默认为文件系统路径(如果存在)(在您的情况下,很难判断您的目标是URL路径还是文件系统路径,因为没有基本文件夹)。请参阅http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewriterule
上的相关文档