Я написал свою собственную структуру MVC в PHP, которая использует URL-адреса в формате:
/controller/method/param1/param2/param...
Я сделал так, чтобы методы «по умолчанию» можно было игнорировать (по умолчанию index()
), поэтому это приводит к URL-адресам, таким как /controller//param1/param2/param...
Например, URL-адрес: /view//panel-glide/3
вызовет index('panel-glide', 3)
в контроллере представления.
Это прекрасно работает и денди, но я обеспокоен тем, что поисковые системы или некоторые старые браузеры могут волноваться, когда они видят двойные косые черты, так как я не думаю, что на самом деле они кажутся им раньше.
Кто-нибудь знает о каких-либо проблемах, с которыми я мог столкнуться, используя это?
На веб-мастерах существует существующий ответ, в котором обсуждается опасность наличия двух косых черт. Он много обсуждает Apache, но идеи должны применяться в целом.
По сути, я не думаю, что это рекомендуется. /foo/bar
и /foo//bar
действительно должен быть двумя совершенно разными путями . Каждая косая черта значительна, и попытки обхода этой стандартизации обязательно вернутся, чтобы укусить вас.
Как упоминается в ответе, существует также реальная опасность, что относительные пути не сработают. Некоторые браузеры будут правильно ../../fizz
что относительный путь ../../fizz
из /foo/bar//baz
is /foo/bar/fizz
, в то время как другие будут рассматривать двойную косую черту как одну, и выбрать /foo/fizz
.
Плюс, я думаю, это выглядит забавно.
Apache рассматривает множественные слэши как одну косую черту. Это влияет на такие вещи, как RewriteRules
, например, если у вас есть правило вроде этого:
RewriteRule ^user/(.*)/([0-9]+)$ /user.php?id=$2 [QSA,L]
Это поймает такие ссылки, как user/nomaD/500
но он не поймает user//500
поскольку он считает, что в качестве user/500
Другими словами, я не думаю, что ваша настройка будет работать, поскольку она будет обрабатывать Я предполагаю, что это не влияет на ваш конкретный случай, но во многих ситуациях это будет недостатком использования param1
как method
и смещать все оставшиеся параметры, если только они не имеют определенного типа.//
.