URL манипулирование PHP - PullRequest
       2

URL манипулирование PHP

0 голосов
/ 07 декабря 2010

У меня есть URL что-то вроде

http://something.com/abc/def/file.php/arguments

Это просто выполняет final.php и аргументы / передаются в переменную $ _SERVER ['PATH_INFO'].

Я хочу выполнить то же самое, но без '.php', т.е.

http://something.com/abc/def/file/arguments

Я предполагаю, что мне нужно добавить что-то в http.conf или ...?

Ответы [ 4 ]

3 голосов
/ 07 декабря 2010

.htaccess - твой друг

Options +FollowSymLinks
RewriteEngine on
RewriteRule file/(.*) file.php?param=$1
2 голосов
/ 07 декабря 2010

Я думаю, что лучший способ сделать это - принять манипулирование URL-адресом в стиле MVC с помощью URI, а не параметров.

В вашем htaccess используйте как:

<IfModule mod_rewrite.c>
    RewriteEngine On
    #Rewrite the URI if there is no file or folder
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

Затем в вашем PHP-скрипте вы хотите разработать небольшой класс для чтения URI и разбить его на сегменты, такие как

class URI
{
   var $uri;
   var $segments = array();

   function __construct()
   {
      $this->uri = $_SERVER['REQUEST_URI'];
      $this->segments = explode('/',$this->uri);
   }

   function getSegment($id,$default = false)
   {
      $id = (int)($id - 1); //if you type 1 then it needs to be 0 as arrays are zerobased
      return isset($this->segments[$id]) ? $this->segments[$id] : $default;
   }
}

Используйте как

http://mysite.com/posts/22/robert-pitt-shows-mvc-style-uri-access

$Uri = new URI();

echo $Uri->getSegment(1); //Would return 'posts'
echo $Uri->getSegment(2); //Would return '22';
echo $Uri->getSegment(3); //Would return 'robert-pitt-shows-mvc-style-uri-access'
echo $Uri->getSegment(4); //Would return a boolean of false
echo $Uri->getSegment(5,'fallback if not set'); //Would return 'fallback if not set'

Сейчас в MVC Там обычно, как http://site.com/controller/method/param, но в приложении не в стиле MVC вы можете сделать http://site.com/action/sub-action/param

Надеюсь, это поможет вам двигаться вперед с вашим приложением.

0 голосов
/ 07 декабря 2010

Этим стилем URL можно управлять с помощью url_rewrite (называемого перезаписью URL), а также с помощью файла .htaccess вашего сервера Apache.

, чтобы сделать это, вам нужно записать это в вас .htaccess файл:

RewriteEngine On
RewriteRule ^http://something.com/every/name/you/like/(arguments)/?$    server_folder/page.php?argument_var=$1

Первый блок кода, представляет пользователю страницу с именем:

^http://something.com/every/name/you/like/(arguments)/?$

Второй блок - это реальная страница, которую вы хотите вызвать, где $1 - это значение переменной внутри ()

server_folder/page.php?argument_var=$1

Если пользователь должен перейти к URL, где аргументы являются только числами, вы должны вставить:

^http://something.com/every/name/you/like/([0-9])/?$

Если пользователь должен перейти к URL, где аргументами являются только буквы, вы должны вставить:

^http://something.com/every/name/you/like/([a-zA-Z])/?$

Чтобы правильно работать с этим стилем URL, вам нужно понять несколько регулярных выражений, таких как в этой ссылке .

Вы можете найти полезную эту таблицу , чтобы помочь вам понять что-то еще.

Обратите внимание, что вы можете написать другой URL вместо реального имени страницы, например:

^http://something.com/love/([a-zA-Z0-9])/?$    section/love/search.php?$1

Это должно быть полезно, чтобы скрыть страницы сервера.

0 голосов
/ 07 декабря 2010

Итак, вы хотите переписать ваши URL. Посмотрите здесь: http://corz.org/serv/tricks/htaccess2.php

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