Intereting Posts
Ошибка 1148 MySQL Использованная команда не допускается с этой версией MySQL Неопределенная ошибка индекса в php с использованием ajax Файл не может быть найден при использовании LifecycleCallbacks Получение подсчета из сводной таблицы в laravel eloquent Как выбрать библиотеку аутентификации для CodeIgniter? Предпочтительно ли назначать переменную POST фактической переменной? как переместить текущую запись в другую таблицу и удалить текущую запись как перенаправить на другую страницу после того, как условие выполнено в php? Доступ к некоторым свойствам объекта SimpleXMLElement Как ограничить специальные символы, кроме подчеркивания, дефиса и точки в поле электронной почты в PHP? Получить все строки на основе запроса в массив Как переопределить максимальное значение suhosin? Плохой запрос. Подключение к сайтам через завиток на хосте и системе Рекомендации по обработке ошибок в базе данных в CodeIgniter Regex для захвата всего перед первой необязательной строкой

Почему Google индексирует дружественный URL-адрес, смешанный с дефисами и% 20?

Я разработал блог с нуля, и все прошло отлично. Я, наконец, начал писать свой первый пост / статью, и я ожидал, что Google проиндексирует эту конкретную страницу, чтобы убедиться, что с ней нет никаких проблем. Ну, google в настоящее время индексирует одну и ту же страницу 4 раза, у меня есть (с помощью пользователей из stackoverflow) mod_rewrite на моем htaccess, чтобы переписать все URL-адреса на дефисы, исходящие из определенного файла (article.php).

Моя текущая статья выглядит так. Например: www.site.com/article.php?article_id=10&article_title=friendly url goes over here

с mod_rewrite Я изменил URL-адреса на следующее.

www.site.com/article/id/friendly-url-goes-over-here

но Google, похоже, индексирует ту же страницу 4 раза, как это сделать ..

 www.site.com/article/10/friendly-url-goes-over-here www.site.com/article/10/friendly-url-goes%20over%20here www.site.com/article/10/friendly-url%20goes%20over%20here www.site.com/article/10/friendly%20-url%20goes%20over%20here 

Почему это индексирование 4 той же страницы? Кажется, он индексирует страницы, сколько раз каждый дефис вставлен, поэтому, если было 10 делений, я предполагаю, что Google будет индексировать 10 той же страницы. Вот весь мой файл htaccess.

 RewriteEngine on # add www before hostname RewriteCond %{HTTP_HOST} ^oddify\.co$ [NC] RewriteRule ^ http://www.%{HTTP_HOST}%{REQUEST_URI} [R=302,L,NE] # if on article page, get slugs and make into friendly url RewriteCond %{THE_REQUEST} \s/article\.php\?article_uid=([^&]+)&article_title=([^&\ ]+) RewriteRule ^ /article/%1/%2/? [L,R=302,NE] # if page with .php is requested then remove the extension RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC] RewriteRule ^ /%1/ [R=302,L,NE] RewriteRule "^(article)/([^ ]*) +(.*)$" /$1/$2-$3 [L,R] # Force a trailing slash to be added RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{THE_REQUEST} \s/+([^.]+?[^/.])[\s?] [NC] RewriteRule ^ /%1/ [R=302,L] # allow page direction to change the slugs into friendly seo URL RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule (?:^|/)article/([^/]+)/([^/]+)/?$ /webroot/article.php?article_uid=$1&article_title=$2 [L,QSA,NC] # silently rewrite to webroot RewriteCond %{REQUEST_URI} !/webroot/ [NC] RewriteRule ^ /webroot%{REQUEST_URI} [L] # .php ext hiding RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME}.php -f RewriteRule ^(.+?)/?$ $1.php [L] 

Я написал этот вопрос несколько дней назад, я обязательно деиндексировал страницы из Google, а теперь google пошел вперед и повторно проиндексировал их одинаково.

Вот страницы google, показывающие 4 страницы индекса: страница поиска google

Попробуйте изменить это перенаправление на 301:

 RewriteRule "^(article)/([^ ]*) +(.*)$" /$1/$2-$3 [L,R=301] 

Статус 301 сообщает google (и браузеру и другим клиентам), что перенаправление является постоянным, а старый URL (один с пробелами) больше не следует рассматривать.

Проблема с вашим файлом .htaccess заключается в том, что для каждого места в заголовке он будет делать одно перенаправление. Это может быть или не быть исправлено с помощью постоянного перенаправления ( 301 ), но даже тогда браузер даст ошибку (обнаружен цикл переадресации), если в заголовке появилось слишком много пробелов. Вы можете исправить обе проблемы, просто сделав все это на сервере:

 RewriteRule ^article/([^\ ]*)\ ([^\ ]*\ .*) /article/$1-$2 [N] RewriteRule ^article/([^\ ]*)\ ([^\ ]*)$ /article/$1-$2 [L,R=301] 

Первое правило совпадает, если в URL-адресе появляется как минимум 2 пробела, и будет перезаписано одно из пространств и попросит Apache снова просмотреть файл .htaccess ( [N] ). Если останется только одно место, второе правило будет соответствовать, и, кроме того, чтобы переписать это последнее пространство, оно также перенаправит пользователя. Это будет только одно перенаправление, и, надеюсь, постоянное перенаправление приведет к тому, что в Google будет отображаться только новый URL-адрес.

Если в URL-адресе больше пробелов, чем есть внутренние рекурсии, разрешенные Apache, это приведет к ошибке внутреннего сервера. Если у вас есть доступ к httpd.conf , вы можете изменить LimitInternalRecursion чтобы разрешить больше внутренних рекурсий. Предупреждение. Установите для этого значение SANE. Если по какой-то причине у вас бесконечный цикл в RewriteRules, и этот номер безумно высок, вы заблокируете свой сервер, пока он не достигнет этого предела. См. Документацию .