将结束文件夹重定向到没有此文件夹的同一URL

时间:2018-05-12 11:05:16

标签: php .htaccess redirect

我想将从我的网站中以/ amp结尾的网址301重定向到没有此最后一个文件夹的相同网址。我见过的所有问题都没有用。

我们的想法是制定一条规则:

https://example.com/directory/name-of-the-article/amp(不以斜线结尾)

重定向到https://example.com/name-of-the-article/(以斜杠结尾)

  • / directory /可以在每个URL中有所不同,但它总是只有一个。

这是我的实际htaccess文件:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

3 个答案:

答案 0 :(得分:0)

1。 301来自.htaccess

我在我的服务器上测试了这个并正常工作:

RewriteRule ^(.*)/amp$ https://yourwebsite.com/$1 [R=301,L]

2。 从HTML重定向

但是,如果您想从AMP页面重定向到普通文章页面,可以使用简单的HTML代码,例如:

<meta http-equiv="refresh" content="0;URL=https://website.com/normal-page/">

您可以通过以下方式恢复PHP的当前网址:

$actual_link = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

您只需使用PHP命令替换 / amp

$normal_page = str_replace('/amp', '', $actual_link);

为获得最佳效果,请不要使用 str_replace ,而应使用正则表达式命令

答案 1 :(得分:0)

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on

RewriteCond %{REQUEST_URI} /amp$
RewriteRule ^(.+)/(.+)/amp$ https://%{HTTP_HOST}/$2/ [L,R=301]

RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

答案 2 :(得分:0)

我找到了解决方案:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] 
RewriteBase /
RewriteRule ^(.*)\/amp$ $1 [R=301,L]
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress