Portál AbcLinuxu, 22. listopadu 2025 15:16
RewriteCond $1 -d [OR] RewriteCond $1 -f RewriteRule ^([^/]+)(.*)$ - [L] RewriteCond $1.wsgi -f RewriteRule ^([^/]+)(.*)$ /$1.wsgi$2 [L] RewriteRule ^([^/]+)(.*)$ /index.wsgi$1$2 [L]
#!/bin/sh
: ${USER:=$(whoami)}
: ${DOC_ROOT:=/home/$USER/http}
: ${DIR:=$(pwd)}
rel_dir=${DIR#$DOC_ROOT}
if [ "$rel_dir" == "$DIR" ]; then
echo "Directory not in user document root!" >&2
echo "DOC_ROOT: $DOC_ROOT" >&2
echo "DIR: $DIR" >&2
exit 1
fi
echo 'RewriteEngine On'
echo 'RewriteCond %{REQUEST_FILENAME} -f' [OR]
echo 'RewriteCond %{REQUEST_FILENAME} -d'
echo 'RewriteRule .* - [L]'
echo "RewriteCond $DIR/\$1 -f"
echo 'RewriteRule ^([^.]+\.wsgi).* - [L]'
echo
echo "RewriteBase /~$USER$rel_path/"
echo "RewriteCond $DIR/\$1.wsgi -f"
echo 'RewriteRule ^([^/]*)(.*)$ $1.wsgi$2 [L]'
echo 'RewriteRule ^(.*)$ index.wsgi/$1 [L]'
# EOF
mod_rewrite pracuje s cestou požadavku, tj. přepisovat to na /~username/ a ne /home/username/http/ je správně. Problém ale může být v tom, že ty cesty nevedou na dokumenty v DocumentRoot, na to je v Apache nějaké omezení.
Z fleku to rozhodně nebylo, inspiroval jsem se v dokumentaci mod_rewrite.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.