使用[QSA,L]通过htaccess规则将带有斜杠的URL重定向到没有尾部斜杠的URL

时间:2016-07-15 18:31:38

标签: apache .htaccess redirect mod-rewrite trailing-slash

最近我打破了与WordPress的关系,并将我的所有网站内容迁移到我自己的定制CMS。除了一件事,一切都很棒。以前指向我网站博客文章的所有链接都有一个斜杠。由于我当前的URL都没有斜杠,以前的链接不再有效,我的SEO几乎不存在。我一直试图找到一个htaccess规则,它将所有尾随的斜杠网址重定向到没有斜杠的网址,但到目前为止,没有任何效果。

2 个答案:

答案 0 :(得分:2)

使用此重定向规则作为删除尾部斜杠的第一条规则:

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.+)/$ /$1 [NE,R=301,L]

答案 1 :(得分:0)

你不想在WordPress中100%删除它。#

但是如果你想要的话,这将告诉你如何。 WordPress" /"修复。我的WordPress Gist

可以转换,因此它有用 配置文件:nginx.conf ...

location  /mirror/foo/ {
        ...
        rewrite ^(.*[^/])$ $1/ permanent;
        ...
}

...

说明WordPress" /" PHP修复 如果博客集用于添加尾部斜杠,则检索尾部斜杠字符串。

如果永久链接结构具有尾部斜杠,则有条件地添加尾部斜杠,如果不是,则删除尾部斜杠。该字符串将通过‘user_trailingslashit’过滤器传递。如果未设置博客,则会从字符串中删除尾部斜杠。

用法

<?php user_trailingslashit( $string, $type_of_string ); ?>

参数

$string
(string) (false) URL with or without a trailing slash.
Default: None
$type_of_url
(string) (false) The type of URL being considered (e.g. single, category, etc) for use in the filter.
Default: None
Return Value (string) 

根据固定链接结构添加/删除尾部斜杠。 codex.wordpress。 / Function_Reference / user_trailingslashit

2。 如果您想添加&#34; /&#34;

<?php trailingslashit( $string ) ?>

实施例

<?php
$path = trailingslashit( '/home/julien/bin/dotfiles' ); 
?>

$ path现在将包含:

/home/julien/bin/dotfiles/

(注意尾随斜杠) https://codex.wordpress.org/Function_Reference/trailingslashit

3。 这是新的 任何测试中最重要的部分是断言。断言是您希望从系统获得的值与实际获得的值之间的比较。最简单的测试可能只包含一个断言。例如:

public function test_trailingslashit_should_add_slash_when_none_is_present() {
    $this->assertSame( 'foo/', trailingslashit( 'foo' ) );
}

assertSame()方法接受两个参数:预期值(在本例中为硬编码字符串'foo/'))和实际值(trailingslashit())返回的值。

可以在下面找到带注释的常用断言列表。 https://make.wordpress.org/core/handbook/testing/automated-testing/writing-phpunit-tests/#assertions

请尝试以下规则:(in www.example.com's server block) rewrite ^/$ http://example.com permanent break; rewrite ^/main(.*)$ http://example.com$1 permanent break; rewrite ^(.*)$ http://blog.example.com$1 permanent;确保重新加载nginx 使用此配置:

  1. http://www.example.com/ *重定向到
  2. http://example.comt -
  3. http://example.com/something - 其他所有内容都重定向到