CodeIgniter: возможно ли удалить контроллер и функцию из URL с помощью маршрутов или .htaccess? - PullRequest
0 голосов
/ 17 августа 2011

У меня есть база данных, состоящая из таблицы, называемой «страницы».У меня есть контроллер с именем "site" и функция с именем "page" ... http://website.com/site/page/page_id.

В функции page он в настоящее время ищет 3-й сегмент URI (page_id), затем находит и сопоставляетэто к строке страницы в базе данных и отображает результаты строки.

Мой вопрос заключается в том, можно ли перенаправить / изменить мой URL-адрес с http://website.com/site/page/page_id на http://website.com/page_id. И затем, очевидно,изменить мою функцию, чтобы найти первый сегмент URI ??

Мой текущий файл .htaccess удаляет «index.php» и выглядит так:

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /db

#Removes access to the system folder by users.
#Additionally this will allow you to create a System.php controller,
#previously this would not have been possible.
#‘system’ can be replaced if you have renamed your system folder.
RewriteCond %{REQUEST_URI} ^system.*
RewriteRule ^(.*)$ /index.php/$1 [L]

#Checks to see if the user is attempting to access a valid file,
#such as an image or css document, if this isn’t true it sends the
#request to index.php
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
#This last condition enables access to the images and css folders, and the robots.txt file
#Submitted by Michael Radlmaier (mradlmaier)
RewriteCond $1 !^(index\.php|images|robots\.txt|css)
RewriteRule ^(.*)$ index.php/$1 [L]
</IfModule>

<IfModule !mod_rewrite.c>
# If we don’t have mod_rewrite installed, all 404’s
# can be sent to index.php, and everything works as normal.
# Submitted by: ElliotHaughin

ErrorDocument 404 /index.php
</IfModule>

1 Ответ

1 голос
/ 17 августа 2011

Взгляните на эту статью . Редактирование маршрута .php в конфигурации вашего приложения должно помочь. Примерно так должно работать:

$route['(:any)'] = 'site/page/$1';

Однако, если вы используете дополнительные контроллеры, может потребоваться дополнительная работа (я предполагаю, что «site» - это ваш контроллер, т.е. site.php находится в приложении / контроллерах).

В коде вы также можете рассмотреть возможность использования :num вместо :any, если идентификаторы вашей страницы только числовые.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...