Перенаправление Htaccess без завершающего слеша - PullRequest
0 голосов
/ 26 апреля 2018

Я бы хотел перенаправить все URL с косой чертой, на которую ссылается Google, на новую ссылку без косой черты.

Пример: http://example.com/toto/ ===> до http://example.com/toto

Предупреждение Я уже переписал правило, чтобы избежать также расширения .html!

Вотмой существующий код:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.html [NC,L]
RewriteCond %{REQUEST_URI} (.+)$
RewriteRule ^ %1 [R=301,L]
</IfModule>

Я получил следующую ошибку:

Not Found

The requested URL /example/.html was not found on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.

1 Ответ

0 голосов
/ 28 апреля 2018

Цель этой темы - найти решение, позволяющее перенаправить существующий URL, указанный поисковой системой, такой как Google, чтобы не потерять текущее SEO после полного обновления веб-сайта (от Wordpress до начальной загрузки).

Первая цель состояла в том, чтобы перенаправить все трафик URL-адресов, например http://example.com/toto/ (google) ===> на http://example.com/toto.

К сожалению, я понял, что сделать обратное более эффективно, чтобы не потерять свойсуществующий список в google (карта сайта и роботы)

Поэтому я решил просмотреть весь код, чтобы получить следующий результат, удалив расширение html и добавив косую черту в конце каждого URL:

http://example.com/toto.html ===> до http://example.com/toto ==> http://example.com/toto/

Ниже приведен код HTaccess, который я использовал, чтобы сделать это возможным:

RewriteEngine On
RewriteBase /

# To externally redirect /dir/foo.html to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.html [NC]
RewriteRule ^ %1/ [R,L]

# add a trailing slash at the end  /dir/foo/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !/$
RewriteRule . %{REQUEST_URI}/ [L,R=301]

# delete the extension .html 
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.html -f
RewriteRule ^(.*?)/?$ $1.html [L,QSA]

Я также добавил строку кода ниже на каждой html-странице, чтобы обеспечить ее соблюдение:

<base href="http://example.com/">

Надеемся помочь любым читателям / кодировщикам в той же ситуации

...