Можно ли как-то сделать что бы .htaccess обрабатывался и генерировался в PHP файле?

12
PN
На сайте с 01.05.2008
Offline
113
1404

Можно ли как-то сделать что бы .htaccess обрабатывался и генерировался в PHP файле?

например что бы пути в этом файле предварительно генерировались в PHP файле

[umka]
На сайте с 25.05.2008
Offline
456
#1
Prosto_niki:
Можно ли как-то сделать что бы .htaccess обрабатывался и генерировался в PHP файле?

например что бы пути в этом файле предварительно генерировались в PHP файле

В чём именно проблема?

PHP умеет работать с файлами с любыми именами — и читать и записывать.

Лог в помощь!
SI
На сайте с 03.12.2007
Offline
130
#2

Можно, например WordPress при установке сам себе .htaccess генерирует.

-= Онлайн сервисы =-
PN
На сайте с 01.05.2008
Offline
113
#3

Так как? Ведь в самом же этом .htaccess я задаю, что например при открытии robots.txt открывать robotots.php , но как задать файлу что он должен сам себя предварительно генерировать?

У меня используютс поддомены. Мне надо что бы зайдя на домен ВАСЯ.ДОМЕН.КОМ автоматически пути /file/вася.тхт преображались и открывали файлы внутри /все сайты/файлы/сайт васи/file/вася.тхт

Т.е. на стороне клиента - просто путь, а на серваке при этом каждый сайт отдельно... В своих подпапках

И эти пути должны предварительно определяться при помощи PHP

siv1987
На сайте с 02.04.2009
Offline
427
#4

Prosto_niki, ничего не понятно кто там сам себя должен генерировать, какие пути и какой вася.txt, но для авто-генерации поддоменов есть куча примеров типа

RewriteEngine On

RewriteCond %{HTTP_HOST} ^(www\.)?(.+)\.site\.ru

RewriteRule (.*) all_sites/файлы/%2/$1 [L]

запрос вася.site.ru/file/index.php

сервером внутреннее будет перенаправляться на all_sites/файлы/вася/file/index.php

Правда это касается всех запросов поддомена. Если нужно конкретно только /file/(.*) то

RewriteRule ^(file/.*) all_sites/файлы/%2/$1 [L]

PN
На сайте с 01.05.2008
Offline
113
#5

Проблема в том, что на каждый поддомен нужна своя подпапка, которая не соотвествует поддомену, а создается согласно ID сайта.

Т.е. заходя на SITE1.address.com у меня должны файлы /файлы/васины/1.тхт автоматом открываться из внутренней папки /сайты/ID сайта/файлы/васины/1.тхт

Опеределение ID сайта делается в PHP файле. Но правила для .htaacess обычно открывается раньше чем все остальное, при этом мне нужно что он открывался, сразу с заданными путями.

"из внутренней папки /сайты/ID сайта/файлы/васины/1.тхт"

Учитывая что сайтов тысячи - нужно это автоматизировать, вручную писать не пойдет

4arger
На сайте с 17.12.2008
Offline
95
#6

Prosto_niki, может проще написать скрипт, который будет генерить .htaccess и поставить его на крон?

siv1987
На сайте с 02.04.2009
Offline
427
#7

Если есть доступ к httpd.conf это можно сделать через директиву RewriteMap, которая будет брать из сгенерированного текстового файла, ид соответствующий этому поддомену.

Prosto_niki:
автоматом открываться из внутренней папки /сайты/ID сайта/файлы/васины/1.тхт

Опеределение ID сайта делается в PHP файле.

Что мешает вместо ид использовать имя поддомена? Оно будет такое же уникальное как и ИД, а в своих скриптах сможете уже по названию достать для себя ИД.

N
На сайте с 02.09.2012
Offline
3
#8
<IfModule mod_rewrite.c>
# Включение mod_rewrite
RewriteEngine on

# Субдомены
RewriteCond %{HTTP_HOST} ^([^.]+)\.proxy\.mn(:[0-9]+)? [NC]
RewriteRule ^(.*) site/%1/%1.txt [NS,L]
</IfModule>

Пример работы.

http://vasya.proxy.mn/

открывает файл из /public_html/site/vasya/vasya.txt

http://katya.proxy.mn/

открывает файл из /public_html/site/katya/katya.txt

Не совсем понятно, как ты собираешься опрелять ID сайта до обработки php.

Или всё таки, намного лучше будет все запросы к одному index.php.

А далее уже php сам всё сделает ?

PN
На сайте с 01.05.2008
Offline
113
#9

Да я думал о таком.. один обработчик.. Но как тогда быть с теми запросами, где используются внутренние PHP файлы, аякс например. Это же нужно инклюды делать для всех этих запросов?

И как ПХП обработчик будет отдавать нужные файлы, .htaacess понятно, а на PHP?

---------- Добавлено 22.09.2012 в 02:45 ----------

Вот например такое "RewriteRule ^subdir/(.*)$ /upload/catalog/1012/$1 [L]" как сделать в PHP?

---------- Добавлено 22.09.2012 в 02:56 ----------

Вот такой метод нормальный http://phpbegun.ru/2010/09/25/rewriterule/? Через require_once($real_file); серверу плохо не станет?

siv1987
На сайте с 02.04.2009
Offline
427
#10

Prosto_niki, еще раз, может быть проще будет создать в качестве идентификатора имя домена?

У вас по сути два варианта, либо RewriteMap, либо id-поддомен. Либо написать функцию php для записи/удаления в htaccess соответствующих директив.

Prosto_niki:
Вот такой метод нормальный http://phpbegun.ru/2010/09/25/rewriterule/? Через require_once($real_file); серверу плохо не станет?

Для отдачи пару текстовых файлов сойдет (немного переделав), для продакшина это извращение.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий