Удалите завершающие URL-адреса веб-сайтов wordpress

У меня есть постоянные ссылки WordPress, настроенные на /% postname% (обратите внимание, что в конце нет косой черты).

Однако wordpress не перенаправляет какой-либо URL-адрес страницы из версии с косой чертой в конце на версию без косой черты. Любой инструмент проверки заголовков веб-сайтов вернет код «200» (ОК) для обеих версий (с косой чертой в конце и без нее). Я обеспокоен негативными последствиями для SEO из-за дублирования контента. Поэтому я хочу иметь только одну версию каждой страницы.

Я пытаюсь изменить файл .htaccess, расположенный в каталоге wordpress, чтобы он удалял завершающую косую черту в конце любого URL-адреса, в значительной степени перенаправляя на версию URL-адреса без косой черты.

У меня Wordpress установлен в подкаталоге не в корне моего сайта, т.е.

http://mywebsite.com/wordpress/

Я попробовал следующий код, который скомпилировал, прочитав различные вопросы, размещенные на этом сайте:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]

RewriteRule ^(.*)/$ /$1 [L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
</IfModule>

Проблема в том, что я не могу войти в систему администратора WordPress. Когда я ввожу свое имя пользователя и пароль на mywebsite.com/wordpress/wp-login.php

обычно он используется для перенаправления и входа на mywebsite.com/wordpress/wp-admin/

Но теперь, поскольку завершающая косая черта удаляется из / wp-admin / кодом, который я добавил в .htaccess, я получаю сообщение об ошибке и не могу войти в Wordpress.

Я продолжал читать эти форумы, а затем попробовал следующее, поиграв с кодом, и теперь я могу войти в wordpress, но теперь конечная косая черта не удаляется ни с одного заданного URL.

 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteBase /wordpress/
 RewriteRule ^index\.php$ - [L]

 RewriteCond %{REQUEST_URI} !^/wp-admin/
 RewriteCond %{REQUEST_URI} ^/wp-login\.php(.*)$
 RewriteCond %{REQUEST_URI} ^/wp-admin$
 RewriteRule ^(.*)/$ /$1 [L,R=301]

 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteRule . /wordpress/index.php [L]
 </IfModule>

Кто-нибудь может порекомендовать, что еще я могу сделать?

Практически все, что я хочу, если URL-адреса страниц не имеют косой черты в конце URL-адреса, за исключением страницы входа в wordpress (mywebsite.com/wordpress/wp-login.php) и mywebsite.com/wordpress/wp -admin /

Помните, что установка Wordpress находится на mywebsite.com/wordpress/, а не на корневом уровне.

Большое спасибо!


person gmartinv    schedule 29.07.2014    source источник
comment
Поисковые системы учитывают корни документов только один раз при сканировании веб-сайтов. Это означает, что поисковые системы будут считать yourwebsite.com и yourwebsite.com/ одной и той же страницей. Я не уверен, что это меняет ваши опасения.   -  person NoodleOfDeath    schedule 29.07.2014


Ответы (1)


Попробуйте эти правила:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /wordpress/
RewriteRule ^index\.php$ - [L]

RewriteRule ^((?!wp-admin/).+?)/$ /$1 [NC,NE,L,R=301]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]
</IfModule>
person anubhava    schedule 29.07.2014