Перепишите все URL в проекте с помощью wamp и Codeigniter - PullRequest
0 голосов
/ 14 марта 2012

У меня есть проект в C:/wamp/www/v3

Когда я открываю проект через http://localhost/v3, я получаю контроллер по умолчанию, как и ожидалось.

Теперь в моем коде есть некоторые URL-адреса, такие как<a href="/login"></a> но когда я нажимаю, я получаю не найденную страницу, потому что она открывается http://localhost/login вместо http://localhost/v3/login

Я пробовал виртуальные хосты и перезаписывал базу с помощью htaccess, но не могу перенаправить направильный URL.

Мой htaccess находится внутри / v3 /:

<IfModule mod_rewrite.c>
    RewriteEngine On
    #RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
    ErrorDocument 404 /index.php
</IfModule>

Ответы [ 4 ]

0 голосов
/ 14 марта 2012

Я привык использовать site_url ('link / to');на любом якоре на моем сайте это сэкономит мне много времени, когда мне придется перенести его на другой сервер / в папку.

Если вы не хотите этого делать, вы можете использовать basetag для установки базыURL для всех ваших ссылок.

В теге:

<base href="<?php echo site_url('/'); ?>" />

Кроме того, если я правильно понимаю, вы уже пытаетесь вставить RewriteBase / v3 / в свой .htaccess, верно?

С уважением

0 голосов
/ 14 марта 2012

вы можете попробовать поместить файл htaccess в каталог C: / wamp / www с таким правилом перезаписи (примечание - не тестировалось, может потребоваться доработка или два):

RewriteCond %{REQUEST_URI} !^/v3/
RewriteRule  ^/(.*)$     /v3/$1  [R]

Но это означает, что ВСЕ URL-адреса, которые не начинаются с / v3 /, будут переписаны так, чтобы иметь / v3 / в начале.На самом деле проблема в том, что ваши URL начинаются с /, поэтому браузер выполняет свою работу и запрашивает URL без / v3 в начале.

0 голосов
/ 14 марта 2012

проблема в том, что ваш якорь установлен на /login, что означает http://mydomain/login. начальный / означает «указать на webroot».

быстрый способ сделать это (особенно при использовании шаблонов), это передать значения base_url() и site_url() ( из класса помощника URL ) вашему представлению и добавить к ним ссылки с им нравится:

<a href="<?= base_url().'/login' ?>">Login</a>

или если я передам $data в шаблон с base_url() в качестве $ data ['base_url']:

<a href="{base_url}login">Login</a>

Примечание: base_url() и site_url() включает косую черту

эффект даст вам это (при условии, что вы не удалили «index.php» с помощью rewrite):

<a href="http://localhost/v3/index.php/login">Login</a>

или, если он будет удален, он вернется:

<a href="http://localhost/v3/login">Login</a>
0 голосов
/ 14 марта 2012

В конфигурации вашего приложения (корневая папка) /application/config.php есть переменная base_url, которую вы можете установить. Попробуйте установить его на 'http://localhost/v3'.

...