косої риски в змінних 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.