Установите чистые URL, такие как CodeIgniter - PullRequest
0 голосов
/ 17 ноября 2011

Мне нравится, как CodeIgniter очищает URL-адреса для сайтов, однако у меня есть сайт, который слишком вовлечен, чтобы начинать заново с использованием инфраструктуры CI (по крайней мере, на данный момент), и мне не нужна глубина, которую обеспечивает CI, я толькоимеют один уровень глубины.

Есть ли простой способ сделать это легко, используя прямой PHP?

index.php?id=2454
index.php/2454/

ПРИМЕЧАНИЕ: Мне нужно прямое решение PHP, потому что серверWindows и .htaccess не настроен на работу.

Ответы [ 4 ]

1 голос
/ 17 ноября 2011

Check $_SERVER['PATH_INFO'] - он возвращает все, что следует за именем файла скрипта, но предшествует запросу.

Например, в URL:

http://www.domain.com/index.php/var1/var2

$_SERVER['PATH_INFO'] будет содержать /var1/var2

Затем вы можете написать функцию в своем __construct() или init() и т. Д., Чтобы проанализировать путь (например, explode("/", $_SERVER['PATH_INFO'])) и использовать полученный массив в качестве переменных.

1 голос
/ 17 ноября 2011

Если вы используете mod_rewrite в apache, вы можете разрешить приложению отправлять запросы по своему усмотрению.

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

Допустим, ваш сервер расположен @ http://coolguy.com, а пользователи обращаются к http://coolguy.com/mycleanurl/

С помощью приведенного выше правила перезаписи в конфигурации .htaccess или apache вы можете перехватить, какой URL-адрес доступен через $ _SERVER ['REDIRECT_URL'], и отправить его в нужную вам кодовую точку.

Директивы «RewriteCond», которые у меня есть, используются для игнорирования этого правила перезаписи, если существует файл непосредственно в месте, указанном пользователем, это удобно для статических ресурсов, таких как CSS, и изображений, которые вам не нужны.чтобы отправить эти запросы самостоятельно.

0 голосов
/ 17 ноября 2011

Если вы используете PHP в Windows и хотите перезаписать URL, у вас есть два варианта:

  • Перезапись URL (что позволяет использовать правила перезаписи в файле web.config) http://www.iis.net/download/urlrewrite - Откройте сайт в IIS Manager и выберите «Перезапись URL-адреса», затем добавьте свои правила.

  • Купите Helicon-APE или аналогичный (что позволяет использовать нативную версию.htaccess file) http://www.helicontech.com/ape/ - мы с большим успехом используем это на наших серверах общего хостинга Windows

0 голосов
/ 17 ноября 2011

Используете ли вы Apache? Если это так, загляните в файлы с именем .htaccess. Они переписывают URL, когда хранятся в вашем каталоге. Так что если вы поместите файл .htaccess в корневой каталог с помощью

# .htaccess
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/www/
RewriteRule ^(.*)$ /www/$1 [L]

затем, когда человек переходит на URL yourdomain.com/page1, он фактически извлекает ресурс yourdomain.com/www/page1 на вашем сервере, но его браузер не видит www.

Таким образом, для очень простого перезаписи URL вы можете использовать это, чтобы скрыть ?var=val&var2=val2 дерьмо в URL

Информация о правилах здесь

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