我正在使用这个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 条目复制这些条件。