BG Development


Страници: (2) [1] 2   ( Първото ново мнение ) Reply to this topicStart new topicStart Poll

> .htaccess and rewrite_rule
emagi
Публикувано на: 02-04-2021, 19:03
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 531
Регистриран на: 12.03.07



Имам следното запитване: от URI
CODE

http://localhost/v1/regions/55/places

искам да получа следното:
CODE

http://localhost/v1/places?regionid=55


Ползван следния код:
CODE

RewriteEngine On

RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^([^\.]+)$ $1.php [NC]
RewriteRule ^(.*?)\/v\d+\/(.*?)$ $1/$2
RewriteRule ^v1/regions/([0-9]+)/places$ /v1/places?regionid=$1 [QSA]


Въведа ли в адрес-бара
QUOTE
http://localhost/v1/regions/55/places
получавам 404 - Not Found

PMEmail Poster
Top
rvc
Публикувано на: 02-04-2021, 22:16
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 2565
Регистриран на: 13.05.11



що не пробваш това?

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
PMEmail PosterUsers Website
Top
thrawn
Публикувано на: 03-04-2021, 06:08
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3091
Регистриран на: 17.01.17



Ами ти това и получаваш...
Друг е въпроса, как смяташ да го обработиш, при положение, че не е ясно какво точно е http://localhost/v1/places
PMEmail Poster
Top
emagi
Публикувано на: 03-04-2021, 09:28
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 531
Регистриран на: 12.03.07



Сега ще обесня какво точно искам да постигна.
Според Rest Guide Line синтаксиса е:
QUOTE
list/{id}/list

Имам list of региони/id на региона/list of населени места
Ако това трябва да го изпълня в php, то в ROOT директорията ми трябва папка regions, в нея папка с номер на региона, после папка places
Структурата на моят проект е boundary/places.php, където:
QUOTE

<Directory "G:\backend\boundary">
    #
    # Possible values for the Options directive are "None", "All",
    # or any combination of:
    #  Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
    #
    # Note that "MultiViews" must be named *explicitly* --- "Options All"
    # doesn't give it to you.
    #
    # The Options directive is both complicated and important.  Please see
    # http://httpd.apache.org/docs/2.4/mod/core.html#options
    # for more information.
    #
    Options Indexes FollowSymLinks Includes ExecCGI

    #
    # AllowOverride controls what directives may be placed in .htaccess files.
    # It can be "All", "None", or any combination of the keywords:
    #  AllowOverride FileInfo AuthConfig Limit
    #
    AllowOverride All

    #
    # Controls who can get stuff from this server.
    #
    Require all granted
</Directory>
boundary e Root директорията


Това мнение е било редактирано от emagi на 03-04-2021, 09:37
PMEmail Poster
Top
emagi
Публикувано на: 03-04-2021, 09:41
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 531
Регистриран на: 12.03.07



QUOTE (thrawn @ 03-04-2021, 06:08)
Ами ти това и получаваш...
Друг е въпроса, как смяташ да го обработиш, при положение, че не е ясно какво точно е http://localhost/v1/places

Целта ми е в places.php, чрез $_GET['regionid'] да изчета стойноста
PMEmail Poster
Top
thrawn
Публикувано на: 03-04-2021, 10:47
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3091
Регистриран на: 17.01.17



Така де, places.php обработва заявката. Как обаче смяташ, че http://localhost/v1/places?regionid=55 ще бъде обработена от places.php ?

При подобна конфигурация е нормално да получиш 404

Като цяло, аз бих подходил малко по по-различен начин. Бих използвал един общ. php файл който да обработва всички заявки за конкретното API и в него бих реализирал отделните крайни точки.

Ето ти пример
CODE
RewriteRule ^v1/(.+)$ /api-v1.php?/$1

Където api-v1.php реализира цялата логика.

Преди време бях правил нищо подобно https://bitbucket.org/mcwolfmm/bgdev-api/src/master/
PMEmail Poster
Top
emagi
Публикувано на: 03-04-2021, 11:31
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 531
Регистриран на: 12.03.07



QUOTE (thrawn @ 03-04-2021, 10:47)
Така де, places.php обработва заявката. Как обаче смяташ, че http://localhost/v1/places?regionid=55 ще бъде обработена от places.php ?

При подобна конфигурация е нормално да получиш 404

Като цяло, аз бих подходил малко по по-различен начин. Бих използвал един общ. php файл който да обработва всички заявки за конкретното API и в него бих реализирал отделните крайни точки.

Ето ти пример
CODE
RewriteRule ^v1/(.+)$ /api-v1.php?/$1

Където api-v1.php реализира цялата логика.

Преди време бях правил нищо подобно https://bitbucket.org/mcwolfmm/bgdev-api/src/master/

Имаш в превид заради v1 ли?
И за това съм помислил>
QUOTE

RewriteRule ^(.*?)\/v\d+\/(.*?)$ $1/$2

Премахвам версията на Rest API-то, каквато и да е тя
PMEmail Poster
Top
emagi
Публикувано на: 03-04-2021, 11:43
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 531
Регистриран на: 12.03.07



QUOTE (thrawn @ 03-04-2021, 10:47)
Така де, places.php обработва заявката. Как обаче смяташ, че http://localhost/v1/places?regionid=55 ще бъде обработена от places.php ?

При подобна конфигурация е нормално да получиш 404

Като цяло, аз бих подходил малко по по-различен начин. Бих използвал един общ. php файл който да обработва всички заявки за конкретното API и в него бих реализирал отделните крайни точки.

Ето ти пример
CODE
RewriteRule ^v1/(.+)$ /api-v1.php?/$1

Където api-v1.php реализира цялата логика.

Преди време бях правил нищо подобно https://bitbucket.org/mcwolfmm/bgdev-api/src/master/

Исками се да спазвам правилото separation of concerns, като всеки end-point e един отделен php файл, но твоята идея също ми харесва.
PMEmail Poster
Top
thrawn
Публикувано на: 03-04-2021, 12:24
Quote Post



Име:
Група: Потребител
Ранг: Почетен член

Мнения: 3091
Регистриран на: 17.01.17



Ми то всеки си е в отделен файл...
PMEmail Poster
Top
emagi
Публикувано на: 03-04-2021, 12:48
Quote Post



Име:
Група: Потребител
Ранг: Редовен член

Мнения: 531
Регистриран на: 12.03.07



QUOTE (thrawn @ 03-04-2021, 10:47)
Бих използвал един общ. php файл


QUOTE (thrawn @ 03-04-2021, 12:24)
Ми то всеки си е в отделен файл...



Нещо не разбрах
PMEmail Poster
Top
1 потребители преглеждат тази тема в момента (1 гости, 0 анонимни потребители)
Потребители, преглеждащи темата в момента:

Topic Options Страници: (2) [1] 2  Reply to this topicStart new topicStart Poll

 


Copyright © 2003-2019 | BG Development | All Rights Reserved
RSS 2.0