Перемещение правил mod_rewrite из conf.d в .htaccess - PullRequest
3 голосов
/ 13 июля 2011

У меня проблема с получением правил mod_rewrite, работающих в .htaccess после их перемещения из папки conf.d.Для производительности я понимаю, что было бы разумнее оставить его там, но у меня есть папка, обслуживающая php в корне документа, к которой я не хочу применять эти же правила.

И вот оно ... Любоеи вся помощь будет принята с благодарностью!

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^/([^/]*)/(\d+)/? /index.php?p=$1&id=$2 [QSA,L]
    RewriteRule ^/([^/]*)/([^/]*)/(\d+)/? /index.php?p=$1&s=$2&id=$3 [QSA,L]
    RewriteCond %{REQUEST_URI} !/(manual|admin|awstats)
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-f
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} !-d
    RewriteRule ^/([^/]*)/?([^/]*)/? /index.php?p=$1&s=$2 [QSA,L]
</IfModule>

Отредактировано с дополнительной конфигурацией:

<Location "/admin/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE site.settings
    #PythonDebug Off
</Location>

Alias /adminmedia/ "/usr/lib/python2.4/site-packages/django/contrib/admin/media/"

<Directory "/usr/lib/python2.4/site-packages/django/contrib/admin/media">
    Options -Indexes MultiViews
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

как указано @Jason McCreary, вы можете поместить свои rewriteRules в раздел <Directory>.Он будет ограничен только этим каталогом.Основное преимущество Directory по сравнению с .htaccess заключается в том, что вам не нужно ничего разрешать в AllowOverride.Итак, это:

  • безопаснее : нет риска, что кто-либо изменит конфигурацию Apache с помощью .htaccess (use AllowOverride None)
  • быстрее : apache не нужно искать какой-либо .htaccess в вашем каталоге или во всех родительских каталогах (например, ваш AllowOverride None в разделе <Directory />, начните сверху файловой системы)

СейчасСуществует некоторая разница в механизме перезаписи при использовании в .htaccess файлах, возможно, вам придется поиграть с rewriteBase , например.

1 голос
/ 13 июля 2011

Убедитесь, что каталог настроен на AllowOverride FileInfo (это необходимо для использования RewriteEngine)

...