我理解有些类似的问题已被提出,是的,我做了并阅读了所有相关的答案,并在相当一段时间内尝试了所有这些。但是,我无法弄清楚错误是什么。我相信脚本是正确的。发生了什么事?
我的问题是我无法在网址中显示尾部斜杠。因此我得到同一页面的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请求有效是必要的,但为什么浏览器不显示它?只是一种美学的东西?无论如何,我更关心上述问题。
非常感谢您的帮助!
答案 0 :(得分:0)
但是我无法弄清楚错误是什么。我相信脚本是正确的。发生了什么事?
在重定向之前,您正在检查文件是否不存在。这不是你想要的,所以删除这一行:
RewriteCond %{REQUEST_FILENAME} !-f
当我进入我的域时,如果在URL中没有显示尾部斜杠“/”,那该怎么办?然后我复制&amp;将其粘贴到文本编辑器中,它显示为https://www.example.com/,带有斜杠。
有些浏览器会自动执行此操作。这可能是因为这是请求的实际URL。它还使它看起来更像一个URL。