Създайте предпочитани от търсачките url-и за уебсайта ви с този лесен урок.
Един начин, за да получите добро оценяване от SERPs (Страниците с резултати от търсачките), е използвайки mod_rewrite, за да направите предпочитани от търсачките urls:
Пример: http://www.mysite.com/keyword/this-is-loads-of-great-keywords
Новатор при уеб развиването би погледнал над горния адрес и да помисли, че това означава създаване на директория, наречена 'keyword' с подкатегория 'this-is-loads-of-great-keywords'. Новаторът ще греши. Използвайки способността mod_rewrite са направени такива urls като този, който всъщност не създава сам страницата. Объркани ли сте? Такъв бях и аз, когато за първи път се опитах да направя това. Няма лесни за следване уроци, които да обесняват това допълнение достатъчно добре или задълбочено, за да са полезни. Така че това е моят опит да разберете лесно и задълбочено урока за използването на mod_rewrite, за да създадете благоприятни urls за търсачките.
Този урок създава това, което е на Apache web server, който има достъпен mod_rewrite feature.
Създаване на .htaccess
Първо трябва да създадем .htaccess файл. Относително казано този файл казва на браузъра къде да отиде, когато е въведено url. За да позволите mod_rewrite в директория, създайте файла .htaccess в текстов обработвач и сложете следното на върха на файла :
CODE
1
RewriteEngine On
Създаване на първото ви презаписващо правило
Сега това е мястото, където започва веселбата.С примера, който ще използвам в този урок, ще имам файл, наречен article.php, който се нуждае от GET променлива, свързана с него и наречена article_id (ex: article.php?article_id=89).Ще променя това в много по-хубаво url от '/any-text-here-89'. За да направя това, въвеждам следния ред в моя .htaccess файл:
CODE
1
RewriteRule ^([a-zA-Z0-9_-]+)-([0-9]+)$ article.php?article_id=$2 [L]
Какъв е този странен синтаксис тук? Наречен е regex (правилен израз).Не съм фен на правилните изрази, това е като второстепенен език за кодиране за форматиране на низове, но е изклиучително полезен за това. Нека обясня горния ред.
Започваме с 'RewriteRule'. Това казва на сървъра, че искаме да обявим правило за url да бъде презаписано, ако съвпада със следващия образец.
След това имаме ^ знака. Това е много важно и трябва да е първото нещо след RewriteRule.Вярвам, че значи „ започва от края на домейна”, за да съвпадне с образеца.
Сега имаме ([a-zA-Z0-9_-]+). Това е regex за 'разрешаване на всякакъв брой знаци и числа с добавка от долни черти (_) и тиренца (-). Плюсът (+) накрая му казва 'всякакъв брой знаци'. Така че 'this-is-a-string' или 'this-is-a-really-long-string' би съвпаднало.
Следващата част е тирето (-).Това означава, че трябва да има тире след сериите от знаци и числа.
След това имаме ([0-9]+). Това е regex за 'позволяване на всякакъв брой числа'.
След това накрая имаме $. Това означава 'и нищо повече'. Може да не се забелязва колко е важен този индивидуален знак, но когато започвате да добавяте многобройни RewriteRules, това започва да става много подобно, а ако нямате този знак, ще имате луди проблеми, ако не сложите вашите RewriteRules в организиран ред.
След това имаме няколко места, следвани от article.php?article_id=$2. Сега това е повече като него.Нещо, което напомня нещо в английския. Това казва на браузъра къде да изпрати съвпадналите образци. Така че всичко, което съвпада с regex-а ще отиде в article.php и премине нещо като aritcle_id.
Знакът ($2) казва на браузъра да използва втората променлива от regex образеца. Всяка regex променлива е групирана чрез скоби (()). В този пример втората променлива ще бъде тази, която свързва ([0-9]+). Ако url-ът завършва на \'http://www.mysite.com/this-is-an-article-89\', втората променлива е '89'.
Също така е много важно да се добавя '[L]' в края на всеки RewriteRule ред. Това ще каже на браузъра да спре да се опитва да свърже url-а с други RewriteRules. Недобавянето на това може да причини страхотни проблеми със страници, отиващи на грешни места.
Разширяване на примера
С това наум бихте могли да създадете по-комплексно RewriteRule, което пропуска повече от една променлива. Ето пример:
CODE
1
RewriteRule ^category-([0-9]+)/article-([0-9]+)$ article.php?category_id=$1&article_id=$2 [L]
Горният пример пропуска 2 променливи до article.php. Така че, ако отида на http://www.mysite.com/category-9/article-448, горното правило ще пропусне category_id of 9 и article_id 448 to article.php.
Заключение и полезни съвети
Надявам се, че този урок ви е помогнал да разберете по-добре mod_rewrite. Предлагам ви да планувате url структурата си, преди да въведете тези RewriteRules, за да предотвратите всякакви проблеми с правила, които могат да имат дублирани съвпадения. Затова ви предлагам някои съвети, които да направят правилните стъпки с вашите RewriteRules:
RewriteRule ^(.*) – Свързва всичко с домейна (ie: www.mysite.com/php or /php.php)
RewriteRule ^(.*).html – Свързва всичко с .html накрая (ie: www.mysite.com/php.html)
([0-9]+) – Съвпаденията трябва да съдържат число или числа
([a-zA-Z0-9_-]+) – Свързва всякакви числа и букви.