Кожен хоче SEO-дружніх URL для своїх веб-сайтів, але це не завжди так просто, як здається.
Незважаючи на безліч прикладів і документів, mod_rewrite є voodoo . Проклятий класний вуду, але ще вуду.
- Брайан Мур
Точно.
Отже, якщо ви хочете переписати ваші URL-адреси, або для того, щоб полегшити користувачам запам'ятовувати або допомогти вашій пошуковій оптимізації, ось допоможіть.
Почати право - основи
Потрібно почати з файлу з назвою ".htaccess". Більше нічого. Це не “code.htaccess” або “smile.htaccess”, просто “.htaccess”. Найпростіше редагувати файл у простій текстовій програмі, такій як Notepad. Якщо ви спробуєте відредагувати його в Dreamweaver, майте на увазі, що вам потрібно буде клацнути правою кнопкою миші файл і вибрати "Відкрити за допомогою… Dreamweaver", щоб отримати його, щоб відкрити його.
Далі у верхній частині файлу потрібно вказати таке:
RewriteEngine On RewriteOptions успадковує параметри + FollowSimlinks Options -Multiviews
Перша лінія вмикає RewriteEngine, що є досить зрозумілим.
Якщо ви використовуєте віртуальний хост (не ваш власний виділений хост), переконайтеся, що ви додаєте другий рядок.
Я знайшов різні погляди на третій рядок. Деякі люди кажуть, що ви повинні використовувати його, деякі люди не. Я використовую його, головним чином тому, що багато людей кажуть, що ваш файл не працюватиме без нього. Voodoo… сказав ya.
Четверта лінія - VITAL, якщо ви використовуєте Godaddy (або я припускаю, що більшість віртуальних хостів), ви повинні мати цю лінію для деяких з кодування для роботи.
Якщо ви починаєте з папки, додайте:
RewriteBase / new
де "/ new" є вкладеною папкою, у якій знаходиться ваш веб-сайт.
Зовнішнє перенаправлення
Коли ми говоримо "зовнішнє перенаправлення", ми маємо на увазі, що ми насправді змінюємо, як виглядає URL-адреса в панелі веб-переглядача. Тому, якщо ви введете “http://mywebsite.com/deal.php”, наступний код робить URL “http://mywebsite.com/deal”. Це перший крок, вам знадобляться як зовнішні, так і внутрішні перенаправлення, щоб зробити цю роботу (інакше комп'ютер буде шукати / мати справу, якої не існує).
У форматі .htaccess ви використовуєте знак "#" для виведення тексту. Отже, перші два рядки - це лише коментарі.
## hide .php extension ## Для зовнішнього перенаправлення /dir/foo.php в / dir / foo RewriteCond% {REQUEST_FILENAME}! -f RewriteCond% {REQUEST_FILENAME}! -d RewriteCond% {THE_REQUEST} ^ [AZ] {3, } s ([^.] +). php [NC] RewriteRule ^% 1 [R, L, NC]
Лінії 3 і 4 і 5 є всіма умовами. .htaccess процвітає на умовах. Ми перевіряємо, чи URL, який ми вводимо, не є файлом або не є директорією, І він закінчується .php (NC = не чутливим до регістру), то ми переписуємо його в рядок 6.
Якщо ви хочете з'ясувати кожен окремий знак у кодуванні вище, швидкий пошук Google пояснить кожну з них.
Головні з них:
^ = означає початок
$ = вказує кінець URL-адреси (перша частина, яку ми хочемо змінити)
. = Період має інше значення в .htaccess, тому для того, щоб насправді ЗНАВАТИ період, потрібно поставити перед ним чергу назад (рядок 5 у кінці, вище)
[R, L, NC] = Це додаткова інформація для файлу
[R] = перенаправлення (зовнішнє)
[L] = остання частина цих правил - наприклад, умови вище кінця в рядку 6, і все після цього не підлягає цим умовам.
[NC] = Не чутливий до регістру
Крім того, ви повинні знати, що файл .htaccess створює змінні автоматично, чисельно - так він автоматично створює $ 1, $ 2, $ 3, відповідно до кодування. Ви повинні знати це, коли ми переходимо до наступного розділу.
Внутрішні форварди
Внутрішні форварди мають справу із створенням URL-адреси, яка виглядає як "http://mywebsite.com/deal", і змушують комп'ютер насправді вибирати це "http://mywebsite.com/deal.php".
Якщо ви використовуєте зовнішній і внутрішній пересилання разом, це ефективно робить ваш URL SEO дружнім.
## Для внутрішнього пересилання / dir / foo в /dir/foo.php RewriteCond% {REQUEST_FILENAME}! -F RewriteCond% {REQUEST_FILENAME}! -D RewriteRule ^ (. *?) / ([A-zA-Z0-9_- ] +) / ([0-9] +) $ /new/$1.php?ID=$3 [L]
Знову перевіряємо файл і каталог у рядках 2 і 3, після чого починаємо правило перезапису.
Моя оригінальна URL-адреса:
http://website.com/new/property/page?ID=28394&29021-Avenue-Sherman
Я хотів, щоб це було:
http://website.com/new/property/page/29021-Avenue-Sherman/28394
У четвертому рядку ми запускаємо URL-адресу, а потім автоматично створюємо “змінну”, підбираючи: (. *?). Ми створюємо ще дві змінні за допомогою дужок. Таким чином, перша змінна ($ 1) буде "властивістю / сторінкою", друга буде "29021-Avenue-Sherman", а третя буде "28394". Пам'ятаєте, що Rewrite Base на початку? Саме це робить $ 1 рівним “властивість / сторінка”.
ПРИМІТКА. Ви не можете переписати все, що спочатку не було в URL-адресі. Тому я не міг додати адресу. Вона повинна бути включена до оригінальної URL-адреси для перезапису.
Потім ми закінчуємо цей розділ “$”, робимо одне простір і починаємо перезапис. Цей перезапис буде приховано, тому що ми не маємо [R] в кінці, тільки [L] для завершення умов. Ця нова URL-адреса - це те, що мені потрібно для отримання інформації на сторінці, а саме ідентифікаційного номера об'єкта. Мені не потрібна адреса для кодування, але якщо ви зробили це, ви також можете додати на "& address = $ 2" до кінця цього URL.
Резюме
.htaccess ускладнений. Є багато речей, які можуть піти не так, деякі з яких ви не будете думати або навіть не знаєте на початку. Але, сподіваюся, це дасть вам початок у виконанні (я б сказав) найпопулярнішої речі, що можна зробити з .htaccess.
І кілька подяк:
Анубхава за його допомогу на моєму StackOverflow.com питання.
Webdeskil який, хоча і не відповів конкретно на питання, яке я розмістив, відповів на інше, що дало мені рішення.
А інші численні інші .htaccess підручники онлайн.
1.php?Com/new/property/page?
Пам'ятаєте, що Rewrite Base на початку?