htaccess尾部斜杠错误

问题描述:

我知道有些类似的问题已经被问到,是的,我读过所有相关答案,并尝试了一段时间。但我无法弄清楚错误是什么。我相信剧本是正确的。到底是怎么回事?htaccess尾部斜杠错误

我的问题是,我不能让后面的斜杠出现在网址中。因此我得到了同一页面的两个版本。 (重复的内容问题?)例如:

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> 

而且一个在同更多的问题。

这是什么,当我去我的域后面的斜杠“/”没有显示在网址中。然后,我复制&将其粘贴到文本编辑器中,并以尾部斜杠作为https://www.example.com/

但是,当我复制/粘贴从任何子页面的网址,例如/faq.php(不要像:/ faq.php/shwoing)一样不会发生。

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

非常感谢您的帮助!

但是我无法弄清楚错误是什么。我相信剧本是正确的。到底是怎么回事?

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

RewriteCond %{REQUEST_FILENAME} !-f 

它是如何,当我去我的域名,其中尾部斜杠“/”未在URL显示。然后,我复制&将其粘贴到文本编辑器中,并以尾部斜杠作为https://www.example.com/

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

+0

非常感谢您的回答。欣赏它!由于一些奇怪的原因,它不起作用。我只使用:(。*) RewriteBase/ 的RewriteCond%{REQUEST_URI}(。*)/ $ 重写规则^ $ https://example.com/$1/ [L,R = 301] 我现在得到的结果是: “www.example。“ ERR_TOO_MANY_REDIRECTS 并且网站根本没有显示。 –

+0

你改变了你的问题的最后一行,应该是'RewriteRule ^(。*)$ https://example.com/$1/ [L,R = 301]'。 – Anonymous