htaccess,一行不起作用



我正在使用这个htaccess文件。除了第一个重写规则之外,一切都运行良好。当我打开本地主机/音乐/测试/时,我收到404未找到错误。当我打开本地主机/音乐/或本地主机/音乐/a/b/等/时,它的工作方式就像它应该的那样。

有人知道我在这里做错了什么吗?

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !..+$
RewriteCond %{REQUEST_URI} !/$
RewriteRule ^([^/]*)/$ /music/index.php?id=$1 [NC,L,QSA]
RewriteRule ^([^/]*)/([^/]*)/$ /music/index.php?id=$1&sid=$2 [NC,L,QSA]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/$ /music/index.php?id=$1&sid=$2&tid=$3 [NC,L,QSA]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ /music/index.php?id=$1&sid=$2&tid=$3&fid=$4 [NC,L,QSA]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ /music/index.php?id=$1&sid=$2&tid=$3&fid=$4&fiid=$5 [NC,L,QSA]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ /music/index.php?id=$1&sid=$2&tid=$3&fid=$4&fiid=$5&siid=$6 [NC,L,QSA]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ /music/index.php?id=$1&sid=$2&tid=$3&fid=$4&fiid=$5&siid=$6&seid=$7 [NC,L,QSA]
RewriteRule ^([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/([^/]*)/$ /music/index.php?id=$1&sid=$2&tid=$3&fid=$4&fiid=$5&siid=$6&seid=$7&eiid=$8 [NC,L,QSA]

apache conf 或虚拟主机可以破坏一行的 htacces 文件吗?

Apache conf 是默认的 conf (apt-get apache2)

虚拟主机文件

<VirtualHost *:80>
    ServerAdmin wouter1994_67@hotmail.com
    ServerName sites
    DocumentRoot /var/www/sites
    <Directory /var/www/sites>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/error.log
    LogLevel warn
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

注意:音乐目录在网站目录内

我看不出 htacess 文件有什么问题,但你可以让它将所有流量重定向到音乐/测试到音乐/a/b/ect

RewriteCond 指令只影响第一个直接RewriteRule,因此您有 3 个条件:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} !..+$
RewriteCond %{REQUEST_URI} !/$

仅适用于第一条规则:

RewriteRule ^([^/]*)/$ /music/index.php?id=$1 [NC,L,QSA]

所有其他规则都不受这 3 个条件的约束。第一个规则可能永远不会被应用的原因是因为你有条件:%{REQUEST_URI} !/$它说 URI 是否以斜杠结尾。但规则本身要求 URI 以斜杠 ( ^([^/]*)/$ ) 结尾。我假设你的条件在他们面前缺少一个^,你的意思是:

RewriteCond %{REQUEST_URI} !^..+$
RewriteCond %{REQUEST_URI} !^/$

如 in,以 . 开头也不是/。如果希望这些条件也应用于其他规则,则还需要为拥有的每个 RewriteRule 条目复制这些条件。

最新更新