编程语言
首页 > 编程语言> > php-将mod_rewrite规则从conf.d移至.htaccess

php-将mod_rewrite规则从conf.d移至.htaccess

作者:互联网

从conf.d文件夹中移出mod_rewrite规则后,它们在.htaccess中工作时出现问题.
我确实出于性能方面的原因而理解,将其放在此处会更明智,但是我在文档根目录上有提供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>

解决方法:

如@Jason McCreary所言,您可以将rewriteRules放在< Directory>部分.它将仅限于该目录.与.htaccess相比,目录的主要优点是您不需要在AllowOverride中允许任何操作.所以那是:

>更安全:没有任何人通过使用.htaccess更改apache配置的风险(使用AllowOverride None)
>更快:apache不需要在目录或所有父目录中搜索任何.htaccess(使用< Directory />部分中的AllowOverride None,从文件系统顶部开始)

现在,在.htaccess文件中使用时,重写引擎有所不同,例如,您可能需要使用rewriteBase.

标签:apache,mod-rewrite,php
来源: https://codeday.me/bug/20191208/2089502.html