我想将从我的网站中以/ amp结尾的网址301重定向到没有此最后一个文件夹的相同网址。我见过的所有问题都没有用。
我们的想法是制定一条规则:
https://example.com/directory/name-of-the-article/amp(不以斜线结尾)
重定向到https://example.com/name-of-the-article/(以斜杠结尾)
这是我的实际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
答案 0 :(得分:0)
我在我的服务器上测试了这个并正常工作:
RewriteRule ^(.*)/amp$ https://yourwebsite.com/$1 [R=301,L]
但是,如果您想从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