htaccess尾随斜杠错误

时间:2017-03-17 23:12:37

标签: .htaccess redirect slash trailing

我理解有些类似的问题已被提出,是的,我做了并阅读了所有相关的答案,并在相当一段时间内尝试了所有这些。但是,我无法弄清楚错误是什么。我相信脚本是正确的。发生了什么事?

我的问题是我无法在网址中显示尾部斜杠。因此我得到同一页面的2个版本。 (重复内容问题?)例如:

htttps://www.example.com/faq.php

&安培;

htttps://www.example.com/faq.php/

我原本希望自动添加尾部斜杠,因此没有其他版本的斜杠。

这是我的.htaccess代码:

 <IfModule mod_rewrite.c>

    RewriteEngine On

    #Redirect anything to http://www (WORKING FINE)
    RewriteCond %{HTTP_HOST} ^example.com [NC]
    RewriteRule ^(.*)$ http://example.com/$1 [L,R=301]

    #Redirect anything to https (WORKING FINE)
    RewriteCond %{HTTPS} !on
    RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

    #Redirect to trailing slash (NOT WORKING!)
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_URI} !(.*)/$  
    RewriteRule ^(.*)$ https://example.com/$1/ [L,R=301]

    #Redirect /index.php to / (WORKING FINE)
    RewriteCond %{THE_REQUEST} ^.*/index\.php 
    RewriteRule ^(.*)index.php$ /$1 [R=301,L] 

</IfModule>

还有一个问题。

当我进入我的域中时,尾随斜杠&#34; /&#34;没有显示在网址中。然后我复制&amp;将其粘贴到文本编辑器中,它显示为https://www.example.com/,带有斜杠。

然而,当我从上面提到的任何子页面复制/粘贴网址时,例如/faq.php(不是shwoing as:/faq.php /),就不会发生同样的情况。

我知道根域中的尾部斜杠对于使HTTP请求有效是必要的,但为什么浏览器不显示它?只是一种美学的东西?无论如何,我更关心上述问题。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

但是我无法弄清楚错误是什么。我相信脚本是正确的。发生了什么事?

在重定向之前,您正在检查文件是否不存在。这不是你想要的,所以删除这一行:

RewriteCond %{REQUEST_FILENAME} !-f 
  

当我进入我的域时,如果在URL中没有显示尾部斜杠“/”,那该怎么办?然后我复制&amp;将其粘贴到文本编辑器中,它显示为https://www.example.com/,带有斜杠。

有些浏览器会自动执行此操作。这可能是因为这是请求的实际URL。它还使它看起来更像一个URL。