Sziasztok,
Adott az alábbi (nem jól működő) virtualhost:
<VirtualHost *:80>
ServerAlias *.loc
AliasMatch ^\/(.*)\/(admin|portal)\/(.*)$ /PATH_TO_FRAMEWORK/modules/$1/files/$2/$3
RewriteLog "/PATH_TO_FRAMEWORK/logs/rewrite.log"
RewriteLogLevel 5
UseCanonicalName Off
VirtualDocumentRoot "/PATH_TO_FRAMEWORK/sites/domains/%0/"
<Directory "/PATH_TO_FRAMEWORK/sites/">
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
DirectoryIndex index.html index.php
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
Order allow,deny
Allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/virtualhost-error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel info
CustomLog ${APACHE_LOG_DIR}/virtualhost-access.log combined
<IfModule mod_fcgid.c>
<Directory "/PATH_TO_FRAMEWORK/sites/">
Options +ExecCGI FollowSymLinks
AddHandler fcgid-script .php
AddType application/x-httpd-php .php
FCGIWrapper /usr/lib/cgi-bin/php5 .php
RewriteBase /
RewriteEngine on
RewriteCond %{REQUEST_URI} !\.(zip|xml|mp3|txt|ico|swf|bmp|jpg|css|jpeg|gif|js|html|png|pdf|exe|doc|xls|pl|cgi|style|ppt|pps|flv|tgz|eot|woff|ttf|svg)$ [NC]
RewriteRule ^(.*)$ /index.php
</Directory>
</IfModule>
</VirtualHost>
Működési elv: A portals dir-ben vannak az adott portálok könyvtárai és a domains könyvtárba egy symlink ezekre ("a" portálhoz pl domains/admin.a.com, domains/www.a.com stb. ezek mutatnak a portas/a-ra)
Eddig nem használtam virtdocroot+rewrite kombót, most viszont szükségem lenne rá az alábbi módon:
Ha a %{REQUEST_URI} fájlvége egy kiterjesztés, (doc pdf zip stb) akkor az töltődjön be, ha nem illeszkedik, abban az esetben minden kérés irányítódjon az index.php-ra.
Ehelyett nálam log alapján internal redirect történik, és már egyszerűen nem látom át hogy mit bénázok el.
Log:
rewrite 'domains/admin.domain.org/' -> '/index.php'
trying to replace prefix /PATH_TO_FRAMEWORK/sites/ with /
internal redirect with /index.php [INTERNAL REDIRECT]
...
Itt valszeg a rewrite a rossz, ha valakinek lenne ötlete megköszönném!
G.
- 4986 megtekintés
Hozzászólások
Közben némileg javult a helyzet: (valszeg átmeneti megoldás de már legalább nagyjából azt csinálja amit szeretnék)
A felső directory részben
/PATH_TO_FRAMEWORK/sites/ helyett /PATH_TO_FRAMEWORK/sites/* lett és execCGI bekerült, illetve a rewrite így néz ki:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/].*)$ /index.php?q=$1 [L]
Így már részben jó a dolog, viszont most minden php-t meg különböző fájlokat is enged futtatni, és nem csak az általam engedélyezetteket (zip|xml|mp3|txt|ico|swf|bmp|jpg|css|jpeg|gif|js|html|png|pdf|exe|doc|xls|pl|cgi|style|ppt|pps|flv|tgz|eot|woff|ttf|svg)
ha pedig beteszem rewritecond-ba h csak ezek fussanak ezt akkor ugyancsak internal server error-t kapok.
- A hozzászóláshoz be kell jelentkezni
Na hát természetesen a legegyszerűbb dolog amire nem gondoltam, leírom h legyen róla naplózás ha más is beleszaladna:
RewriteEngine On
RewriteCond %{REQUEST_URI} !(\.(zip|xml|mp3|txt|ico|swf|bmp|jpg|css|jpeg|gif|js|html|png|pdf|exe|doc|xls|pl|cgi|style|ppt|pps|flv|tgz|eot|woff|ttf|svg)$|^/index\.php$)
RewriteRule ^([^/].*)$ /index.php
A korábbi *-os és a +execCGI benne maradt, szóval azok is kellenek a működéshez.
MG
- A hozzászóláshoz be kell jelentkezni