一封电子邮件发出了错误的链接(https://www.digitalmarketer.com/digital-marketing/content-marketing-strategy//),我们需要将//重定向到(https://www.digitalmarketer.com/digital-marketing/content-marketing-strategy/),但无论我如何尝试,重定向都不起作用。
他们还希望将其重定向为始终在开头使用https:///www,而在结尾永远不使用index.html,因此在.htaccess文件中,我已经有了:
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
RewriteCond %{HTTP_HOST} !^$
RewriteCond %{HTTP_HOST} !^www\. [NC]
RewriteCond %{HTTPS}s ^on(s)|
RewriteRule ^ http%1://www.%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
RewriteRule ^content\-marketing\-strategy/index\.html$ /digital-marketing/content-marketing-strategy/? [L,R=301]
我已尝试添加新的重写规则,但此操作不起作用:
RewriteRule ^content\-marketing\-strategy//$ /digital-marketing/content-marketing-strategy/? [L,R=301]
我是非常新的Apache和重定向,所以任何帮助是非常感谢!谢谢!
编辑:值得注意的是,这是在数字营销文件夹(https://www.digitalmarketer.com/digital-marketing/.htaccess)内的.htaccess文件中,这样做是为了使上述所有规则仅适用于数字营销文件夹。
3条答案
按热度按时间w80xi6nr1#
您可以在其他规则的末尾使用insert rule将多个
//
剥离为/
:Apache自动将多个
//
拆分为RewriteRule
模式中的一个,因此捕获的值$0
将所有//
转换为/
v1uwarro2#
您可以撰写万用字符表示式来移除尾端斜扛。下列表示式将符合任何以正斜扛结尾的HTTP或HTTPS URL,并移除该URL的所有尾端正斜扛:
更多使用301重定向的内容,请查看此处:Best Practice: 301 Redirect HTTP to HTTPS (Standard Domain)
祝你好运!
wfsdck303#
我在规则的编写方式中没有看到任何会使其无法重写的内容。但是,您有多个带有L标志的规则,它们可能会在您要查找的时间点之前停止对重写的处理。来自文档
[L]标志会导致mod_rewrite停止处理规则集。在大多数上下文中,这意味着如果规则匹配,将不会处理其他规则。(https://httpd.apache.org/docs/current/rewrite/flags.html)。
你可以尝试这个页面http://htaccess.mwl.be/来测试你所有的规则。你可能需要重写一些规则来处理这个页面,它不知道你的.htaccess文件的级别,所以你必须重写所有的规则来从根触发,例如:
RewriteRule ^digital\-marketing/content\-marketing\-strategy//$ /digital-marketing/content-marketing-strategy/? [L,R=301]