Использование относительных URL при использовании «чистых URL»? - PullRequest
1 голос
/ 05 октября 2011

Я направляю все URL-запросы на фронт-контроллер. URL-запросы выглядят как example.com/controller/action/etc. Проблема заключается в использовании относительных URL-адресов в программе. Это прекрасно работает, если в запросе URL есть только одна косая черта, но если есть более одной косой черты, относительный URL прерывается.

В местоположении example.com/controller, относительный URL other-controller работает нормально, переводя пользователя на example.com/other-controller.

В местоположении example.com/controller/action, относительный URL other-controller не работает, переводя пользователя на example.com/controller/other-controller.

Любые рекомендации о том, как обойти это? Надеюсь, я могу сделать это без использования абсолютных путей или кода, генерирующего URL, каждый раз, когда я хочу создать URL в приложении.

В случае, если это имеет значение, в настоящее время я использую этот код .htaccess для перенаправления входящих запросов на фронт-контроллер:

# Point all to index.php except existing files
<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

1 Ответ

1 голос
/ 05 октября 2011

Вам нужно будет использовать абсолютные URL-адреса, чтобы делать то, что вы хотите, не глядя на текущий путь и добавляя правильное число .. с. Вам не нужно иметь домен для каждого, вы можете просто использовать URL-адреса, такие как /controller/action и /other-controller/action. Они будут работать для обоих контроллеров без проблем. Пример тега привязки:

<a href="/controller/action">Do something!</a>

Как примечание, часто люди пишут функции для генерации URL. Если вы используете MVC-фреймворк, он может быть в форме добавления метода к модели и вызова функции get_absolute_url, которая возвращает форму, которую я упомянул выше.

...