Перенаправить конечную папку на тот же URL без этой папки - PullRequest
0 голосов
/ 12 мая 2018

Я бы хотел перенаправить 301 с URL-адресов, заканчивающихся на моем сайте / amp, на те же URL-адреса без этой последней папки. Весь вопрос, который я видел, не работает.

Идея состоит в том, чтобы сделать правило так:

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 голосов
/ 12 мая 2018
<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>
0 голосов
/ 12 мая 2018

Я нашел решение:

# 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
0 голосов
/ 12 мая 2018

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/">

Вы можете восстановить текущий URL с помощью PHP:

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

После того, как вы можете просто заменить / amp командой PHP:

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

Для лучшего результата не используйте str_replace , но используйте regex command

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...