Intereting Posts

Как переписать SEO дружественный url как stackoverflow

Если вы перейдете к URL-адресу, например: http://stackoverflow.com/questions/9155602/ адресная строка будет обновлена ​​до http://stackoverflow.com/questions/9155602/redirect-existing-file-to-different-url-using-mod-rewrite . Это не делается с JavaScript, а не с жестким обновлением, я думаю, что это делается с помощью mod_rewrite; однако, как он узнает название статьи без обработки на стороне сервера с помощью php?

Я только что обновил свой сайт, чтобы использовать дружественный URL-адрес SEO, он был /shows.php?id=review-1 а теперь он /review/1/super-baseball-2020 . Текст в конце на самом деле не имеет особого значения, когда дело доходит до моего переписывания:

 RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([a-z0-9]+)/([0-9]+)/([a-z0-9-]+)?/?$ /shows.php?id=$1-$2 [L,NC] 

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

 RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\? RewriteCond %{QUERY_STRING} (?:^|&)id=review-1(?:&|$) [NC] RewriteRule ^ /review/1/super-baseball-2020/? [R=301,L,NC] RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\? RewriteCond %{QUERY_STRING} (?:^|&)id=review-2(?:&|$) [NC] RewriteRule ^ /review/2/aero-fighters-2/? [R=301,L,NC] RewriteCond %{THE_REQUEST} ^GET\s/shows\.php\? RewriteCond %{QUERY_STRING} (?:^|&)id=review-3(?:&|$) [NC] RewriteRule ^ /review/3/aero-fighters-3/? [R=301,L,NC] .... and so on .... 

Это решение очень близоруко, и тысячи строк помещаются в мой .htaccess.

Related of "Как переписать SEO дружественный url как stackoverflow"

как он узнает название статьи без обработки на стороне сервера с помощью php?

mod_rewrite может делать только многое. Кроме того, вам придется обновить его слишком много. Лучше обрабатывать эти запросы с помощью скриптов. Создайте .htaccess , аналогично тому, что вы сделали:

 <IfModule mod_rewrite.c> RewriteEngine On #RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ /index.php [QSA,L] </IfModule> 

Затем в вашем index.php разделите REQUEST_URI на разбор /review/1/ , посмотрите в базе данных заголовок обзора с id 1, передайте его в свою дружественную функцию URI (slug) и добавьте его в url, затем перенаправить.

для дублированного контента у вас должен быть канонический тег ссылки в голове. канонический тег ссылки скажет google, что текущая страница имеет альтернативный URL-адрес для того же содержимого, что и каноническая ссылка, а основным URL для этого контента является каноническая ссылка. это отлично подходит для таких вещей, как разбитый на страницы контент, поиск, ect, где одна и та же страница может иметь разные URL-адреса.

 <link rel="canonical" href="http://www.somedomain.com/mainurl" /> 

Я также создал SEO-friendly URL-решение для нашего шоу. URL-адрес естественно /raido/episode.php?SeriesId=1&EpisodeId=123, но я тоже хотел /radio/1-123-live.htm, поэтому мой .htaccess выглядит так:

RewriteRule ^ \ d {1,3} – \ d {1,4} (. +). Html $ episode.php? Slug = $ 0

Затем я разрешаю странице назначения обрабатывать ее

 if ($Slug !== "") { $lIds = explode("-", $Slug); $SeriesId=$lId[0]; $EpisodeId=$lIds[1]; } 

Это также позволяет вам продолжать принимать существующие ссылки, не имея двух версий одного и того же кода.

если я сделаю

 curl -I http://stackoverflow.com/questions/9155602/ 

я действительно получаю жесткую переадресацию:

 HTTP/1.1 301 Moved Permanently Cache-Control: public, max-age=60 Content-Length: 0 Content-Type: text/html Expires: Mon, 06 Feb 2012 22:43:27 GMT Last-Modified: Mon, 06 Feb 2012 22:42:27 GMT Location: /questions/9155602/redirect-existing-file-to-different-url-using-mod-rewrite Vary: * Date: Mon, 06 Feb 2012 22:42:27 GMT 

часто эти настройки содержат короткий .htaccess, заставляя все запросы проходить через передний контроллер или основной файл index.php. этот файл проверяет переменную $ _SERVER ['PATH_INFO'] и решает, какой контент втянуть и отобразить.

это простой пример .htaccess (на самом деле просто скопирован с установки ванильного WordPress):

 RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] 

в этом примере с жесткой переадресацией они могут иметь «else» в index.php, делая поиск и перенаправлять правильно, если контент не найден на основе последнего фрагмента PATH_INFO.

Вам нужно либо сделать это в самом приложении, проверив URL-адрес против абсолютного URL-адреса для запрашиваемого местоположения, либо генерируя отображение каждый раз, когда добавляется новая «страница».