косої риски в змінних URL


106

Я налаштував свою програму на холодний синтез, щоб на сторінці були динамічні URL-адреси, наприклад

www.musicExplained/index.cfm/artist/:VariableName

Однак мої назви змінних іноді містять косої риси, наприклад

www.musicExplained/index.cfm/artist/GZA/Genius

Це спричиняє проблеми, оскільки моя програма передбачає, що коса риса у назві змінної являє собою інший розділ веб-сайту, альбоми виконавців. Тож URL-адреса не вдасться.

Мені цікаво, чи є в будь-якому випадку запобігання цього? Чи потрібно використовувати функцію, яка замінює косої риси в назвах змінних іншим символом?


4
Це звичайні або прямі куски. Не нахили нахили.
— Калеб Херт

Відповіді:


175

Вам потрібно уникнути косої риси як %2F.


Гаразд, це здається гарною ідеєю, чи є якісь конкретні причини використовувати% 2F?
— намтакс

1
Це стандартне кодування URL-адрес.
— SLaks

44
IIS все ще перехоплює це як a /і перериває маршрут. :(
— Пьотр Кула

21
Apache трактує це як / і порушує маршрут, якщо не буде включена директива AllowEncodedSlashes (за замовчуванням її вимкнено)
— прим.

5
Можна використовувати encodeURIComponentі decodeURIComponentдля цієї мети.
— Keavon

17

Ви можете легко замінити косою рисою наперед /на щось на кшталт підкреслення, _наприклад, яке використовує Вікіпедія для пробілів. Заміна спеціальних символів підкресленнями тощо - звичайна практика.


4
Це звичайна практика, але це НЕ найкраща практика. Використання втілених символів - найкраща практика, оскільки розуміють це кожен браузер, кожен сервер це розуміє, і кожен розробник повинен навчитися робити це таким чином. Оцінки ЮНДЕРСЬКОГО БУДУТЬ і для SEO! Я просто говорю це, коли я це робив також, і навчився важкого шляху, коли він повертається, і важко зачепив вас.
— Пьотр Кула

1
@ppumkin - чому ти так вважаєш? використання втілених символів насправді не є найкращою практикою, оскільки створює URL-адреси, які не є зручними для користувачів і можуть виглядати дуже дивно для користувачів, які не користуються технологіями. Я думаю, що найкраще спробувати зберегти URL-адреси якомога розумнішими
— vsync

Що стосується UNderscores ARE BAD FOR SEOкоментаря. Підкреслення інтерпретуються Google як підкреслення, тире та дефіси трактуються як пробіли. Чому? Кодери, багато кодерів використовують Google (включаючи самих Google з перших днів), якщо вони розцінювали підкреслення як пробіли, які ви більше не зможете знайти foo_bar(можливо, якийсь клас) в результатах пошуку. Бла-бла ... На закінчення: Підкреслення не є поганим для SEO, якщо ви розумієте, наскільки насправді працює пошукова система, яку ви "оптимізуєте".
— Вільям Істед

8

Вам потрібно уникнути цих, але не замінювати їх лише %2Fвручну. Ви можете використовувати URLEncoderдля цього.

Напр URLEncoder.encode(url, "UTF-8")

Тоді ви можете сказати

yourUrl = "www.musicExplained/index.cfm/artist/" + URLEncoder.encode(VariableName, "UTF-8")

9
Функція URLEncoder не визначена в деяких браузерах, наприклад в Chrome. Тому я пропоную використовувати encodeURIComponent, w3schools.com/jsref/jsref_encodeuricomponent.asp

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.