Tulis ulang kondisi di Lighttpd untuk Slim Framework dan AngularJS

Saya perlu memigrasikan situs web berbasis Apache php ke lighttpd tetapi saya mendapatkan beberapa masalah untuk mengubahnya.

Struktur direktori saya adalah:

-rootdir
--index.php¹
--login.php²
--views²
--server
---service³
---auth³

¹ Di rootdir, aturan penulisan ulang di Apache adalah:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_URI} !\.(js|ico|gif|jpg|png|css|html)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]

² file login.php dan folder tampilan perlu dihindari dengan menulis ulang ³ Direktori server/auth dan server/layanan memiliki penulisan ulang Anda sendiri:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [QSA,L]

Mencoba membuat aturan, dan hampir semuanya baik-baik saja, tetapi /server/service tidak

url.rewrite-if-not-file = (
                "^/login.php\/?([^.]+)$/" => "/login.php/$1", #ok
                "^/(views|assets|css|images|application)/(.*)" => "$0", #ok
                "/server/service/.*\?(.*)$" => "/server/service/index.php?$1", #return rewrite response of rootdir/index.php
                "/server/auth/.*\?(.*)$" => "/server/auth/index.php?$1", #ok
                "/.*\.(js|ico|gif|jpg|png|css|html)$" => "$0", #ok
                "/.*\?(.*)$" => "/index.php?$1",
               "" => "/index.php"
         )

contoh penggunaan:

www.example.com/home/id/2 ‹-- gunakan /rootdir/index.php www.example.com/server/auth/check/sessionid2235232132 ‹-- gunakan /server/auth/index.php www.example. com/server/server/db/clients/getall ‹-- gunakan /server/service/index.php


person LeonanCarvalho    schedule 21.07.2014    source sumber


Jawaban (1)


Tidak ada jalan keluar yang mudah untuk memigrasikan beberapa kasus tertentu seperti itu.

Setelah beberapa percobaan dan pengujian saya mencapai aturan ini untuk kasus ini.

 url.rewrite-if-not-file = (
                "^/login.php\/?([^.]+)$/" => "/login.php/$1",
                "^/(views|assets|css|images|application)/(.*)" => "$0",
                "/server/auth/.*\?(.*)$" => "/server/auth/index.php?$1",
                "/server/service/.*\?(.*)$" => "/server/service/index.php?$1",
                "/.*\.(js|ico|gif|jpg|png|css|html)$" => "$0", #ok
                ".*\?(.*)$" => "/index.php?$1",
                "" => "/index.php"
    )

Untuk menghindari kondisi penulisan ulang pada file tertentu:

 "^/login.php\/?([^.]+)$/" => "/login.php/$1",

Untuk menghindari kondisi penulisan ulang pada folder tertentu:

 "^/login.php\/?([^.]+)$/" => "/login.php/$1",

Untuk menulis ulang string kueri untuk file tertentu di folder tertentu

"/server/auth/.*\?(.*)$" => "/server/auth/index.php?$1",
"/server/service/.*\?(.*)$" => "/server/service/index.php?$1",

Untuk menghindari penulisan ulang pada beberapa file (Ini tidak masuk akal tetapi harus dilewati ketika kita menggunakan rewrite-if-not-file)

"/.*\.(js|ico|gif|jpg|png|css|html)$" => "$0",

Saat kita menggunakan front-end javascript seperti Angularjs dengan url ramah, sangat penting untuk membuat 2 aturan penulisan ulang ini.

".*\?(.*)$" => "/index.php?$1",
"" => "/index.php"

Dalam skenario saya, saya memiliki 2 backend server (auth dan layanan) menggunakan slimframework, dan saya memiliki frontend di AngularJS. Aturan ini memungkinkan saya menulis ulang url di backend dan frontend tanpa masalah.

person LeonanCarvalho    schedule 28.07.2014