Динамичен .htaccess

dakata__92

Super Moderator
Здравейте колеги! Имам проблем с презаписването на директория. Всъщност кода си работи добре. Ето го и него:
Код:
RewriteEngine On
RewriteBase /framework/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ ?$1 [QSA,L]

Проблема ми е следният. Желая да направя така че кода да засича автоматично руут директорията динамично. RewriteBase /framework/public/
за това говоря. Искам примерно да засича автоматично имената на папките без да се налага да ги въвеждам ръчно. Тоест търся код който да замести кода в червено за да не се налага да презаписвам постоянно .htaccess файла ръчно.
 
Аз използвам bash в кука на composer

Код:
#!/bin/bash
    project_dir_var="{ProjectDirectory}";

    while read line; do
        echo -e "${line/$project_dir_var/$project_dir}"
    done < $project_dir/bin/templates/htaccess.tpl > $project_dir/public/.htaccess

Код:
RewriteEngine On
RewriteBase {ProjectDirectory}/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ ?$1 [QSA,L]
 
gamena007 каза:
Аз използвам bash в кука на composer

Код:
#!/bin/bash
    project_dir_var="{ProjectDirectory}";

    while read line; do
        echo -e "${line/$project_dir_var/$project_dir}"
    done < $project_dir/bin/templates/htaccess.tpl > $project_dir/public/.htaccess

Код:
RewriteEngine On
RewriteBase {ProjectDirectory}/public/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.+)$ ?$1 [QSA,L]

Фактически искаш да създавам .htaccess файла динамично?
 
gamena007 каза:
Да при deploy на проекта.
А с абсолютен път преминат през realpath ще работи ли? Тъй като имам константа с такъв път мога да я ползвам, иначе трябва да си повтарям кода?
 
eLite каза:
Защо не си сложиш .htaccess-а в public директорията и толкова?
Там е просто пиша рутер и е нужно да има база за да може да я презаписва.
 
dakata__92 каза:
eLite каза:
Защо не си сложиш .htaccess-а в public директорията и толкова?
Там е просто пиша рутер и е нужно да има база за да може да я презаписва.

Щом е там, защо ти е /framework/public/? Защо просто не го сетнеш на /?
 
eLite каза:
dakata__92 каза:
eLite каза:
Защо не си сложиш .htaccess-а в public директорията и толкова?
Там е просто пиша рутер и е нужно да има база за да може да я презаписва.

Щом е там, защо ти е /framework/public/? Защо просто не го сетнеш на /?
Усутех се и сам. Проблема е че е на локален хост и името на папката е /framework/ като няма как да е само /
 
dakata__92 каза:
eLite каза:
dakata__92 каза:
Там е просто пиша рутер и е нужно да има база за да може да я презаписва.

Щом е там, защо ти е /framework/public/? Защо просто не го сетнеш на /?
Усутех се и сам. Проблема е че е на локален хост и името на папката е /framework/ като няма как да е само /

Не е проблем localhost-а, а настройките на VHost-a ти.

Предполагам ползваш Apache. Направи такъв vhost:

Код:
<VirtualHost *:80>
    DocumentRoot "c:/www/framework/public"
    ServerName framework.local
    ServerAlias www.framework.local
</VirtualHost>

И добави:
Код:
127.0.0.1 framework.local
127.0.0.1 www.framework.local

в C:\Windows\System32\drivers\etc\hosts файла.

После рестартирай Apache-то и си използвай framework.local за достъп до frame-a чрез browser-a.
 

Back
Горе