Есть ли недостатки использования двойной косой черты в URL?

Я написал свою собственную инфраструктуру MVC на PHP, которая использует URL в формате:

/controller/method/param1/param2/param...

Я сделал так, чтобы методы «по умолчанию» можно было игнорировать (по умолчанию index()), поэтому это приводит к URL-адресам, таким как /controller//param1/param2/param.... Например, URL-адрес: /view//panel-glide/3 будет вызывать index('panel-glide', 3) в контроллере view.

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

Кто-нибудь знает о каких-либо проблемах, с которыми я могу столкнуться при использовании этого?

11 голосов | спросил wyqydsyq 29 J0000006Europe/Moscow 2012, 08:46:51

2 ответа


0

На WebMasters уже есть ответ, в котором обсуждается опасность наличия двух слешей . Он много обсуждает Apache, но идеи должны быть применимы в целом.

По сути, я не думаю, что это рекомендуется. /foo/bar и /foo//bar действительно должны быть два совершенно разных пути . Каждый слэш важен, и попытки обойти эту стандартизацию обязательно вернутся, чтобы укусить вас.

Как уже упоминалось в ответе, существует также очень реальная опасность сбоя относительных путей. Некоторые браузеры правильно считают, что относительный путь ../../fizz из /foo/bar//baz - это /foo/bar/fizz, в то время как другие будут рассматривать двойную косую черту как одну и выбирают /foo/fizz

Плюс, я думаю, это выглядит забавно.

ответил voithos 29 J0000006Europe/Moscow 2012, 08:56:03
0

Apache рассматривает несколько слэшей как один слэш. Это влияет на такие вещи, как RewriteRules, например если у вас есть такое правило:

RewriteRule ^user/(.*)/([0-9]+)$ /user.php?id=$2 [QSA,L]

Это будет ловить ссылки, такие как user/nomaD/500, но не будет ловить user//500, поскольку он обрабатывает это как user/500

Другими словами, я не думаю, что ваша установка будет работать, поскольку она будет обрабатывать param1 как method и сдвиньте все параметры влево, если они не относятся к конкретному типу. Я думаю, это не повлияет на ваш конкретный случай, но во многих ситуациях это было бы недостатком использования //.

ответил andrewtweber 29 J0000006Europe/Moscow 2012, 08:58:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132