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