网址重定向到.htaccess中

时间:2018-11-19 08:58:15

标签: php .htaccess url

我是.htaccess的新手。我想重定向URL ,以不加斜杠结尾的斜杠,如下所示:

Redirect www.mydomain.com/page1 www.mydomain.com/page1/ 

这不起作用。我在做什么错了?

2 个答案:

答案 0 :(得分:1)

要强制使用斜杠策略:

<IfModule mod_rewrite.c>
     RewriteCond %{REQUEST_URI} /+[^\.]+$
     RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [L,R] # <- for test, for prod use [L,R=301]
</IfModule>

编辑:注释了R = 301的部分,因为,如注释中所述:

  

小心R = 301!在那里有很多浏览器缓存   .htaccess文件无限期地:如果以某种方式变得不可逆转   您无法在所有打开浏览器的计算机上清除浏览器缓存。什么时候   测试,最好使用简单的R或R = 302

     

完成测试后,可以使用R = 301。你可以试试   这个。将以下内容复制到htaccess文件中,以添加斜杠   到您的网站。

答案 1 :(得分:1)

您不使用Redirect /page1 /page1/ 中的域,仅使用路径

RewriteRule ^(.*[^/])$ /$1/ [R=302,L,QSA]

这仅适用于定义的路径。如果您需要更通用的方法,请使用带有正则表达式的mod_rewrite模块中的RewriteRule

/

这将检查所有不以# Add `nocache` environment variable if rewrite RewriteRule ^(.*[^/])$ /$1/ [R=302,L,QSA,E=nocache:1] <IfModule mod_headers.c> ## Set the response header if the "nocache" environment variable is set ## in the RewriteRule above. Header always set Cache-Control "no-store, no-cache, must-revalidate" env=nocache ## Set Expires too ... Header always set Expires "Thu, 01 Jan 1970 00:00:00 GMT" env=nocache </IfModule> 结尾的字符串,并在302重定向中附加斜杠。只需短短的代码就可以得到很多信息。

编辑/注释

我在这里使用302重定向。这可能导致重复内容对Google造成处罚。在这种情况下,301重定向是必要的。由于没有关于是否应缓存重定向以及重定向循环应持续多长时间以及是否导致覆盖的标准(在Brave Browser中,后者存在问题), 我建议将“缓存”策略设置为“没有任何重定向的缓存”。可以通过在应用重写时设置环境变量并设置Cache标头(如果已设置此环境变量)来做到这一点:

CN1| CN2| CN3
 1    b    c
 1    d    f
 2    g    h