htaccess 问题

htaccess 问题

我的问题是:当我创建 .htaccess 文件时,我的浏览器显示 403 Forbidden 我的 htaccess 代码是

Options SymLinksIfOwnerMatch
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteCond %{REQUEST_URI} !^/(img|css|port/.*)$
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]*)/([^/]*)$ index.php?page=$1&id=$2 [L]

我的重写模式是启用 index.php 存在问题在哪里。当我删除或重命名 htaccess 时,问题就消失了这是我的配置 ServerAdmin webmaster@localhost

DocumentRoot /var/www
<Directory />
    Options FollowSymLinks
    AllowOverride All

</Directory>
<Directory /var/www/>
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
    Allow from all
</Directory>

ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
    AllowOverride All
    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
    Order allow,deny
    Allow from all
</Directory>

ErrorLog ${APACHE_LOG_DIR}/error.log

# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn

CustomLog ${APACHE_LOG_DIR}/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>

答案1

你的 .htaccess 中有这个:

<IfModule mod_rewrite.c>

但你没有(或没有发布)匹配

</IfModule>

另外,您可以查看 Apache 的错误日志(通常是 /var/log/apache/error.log)以获取有关您看到的 403 错误的更多详细信息。如果您无法从错误日志中找出问题所在,您可以将包含错误的行添加到您的问题中,我们可以帮助您查看问题所在。

答案2

首先你要把你的情况和配置描述清楚,以免造成对方对你的情况和配置的误解。

您是否检查过 phpinfo 中的配置> apache2handler>已加载的模块,其中必须写入mod_rewrite显示 mod_rewrite 已启用。如果没有,您应该运行以下命令:

sudo a2enmod rewrite

然后重新启动 apache:

sudo service apache2 restart

如果你已经做了这些事情。尝试检查你的 /var/www/ 中的权限。通常,403 禁止错误意味着你的文件权限不正确,文件夹被设定为755文件644

相关内容