Apache2:ReWrite 规则行为异常

Apache2:ReWrite 规则行为异常

我的 .htaccess 文件中有以下内容:

<Directory /home/eamorr/sites/example.com/www>
                Options Indexes FollowSymLinks MultiViews
                Options -Indexes
                AllowOverride all
                Order allow,deny
                allow from all

                RewriteEngine on
                RewriteRule ^([^/.]+)/?$ index.php?uname=$1 [R,L]
</Directory>

当我去http://example.com/Eamorrhttp://example.com/home/eamorr/sites/example.com/www/index.php?uname=Eamorr出现在地址栏中!

但我想要http://example.com/index.php?uname=Eamorr出现在地址栏中!!!

(我需要在 index.php 中用 javascript 解析 URL)

答案1

<Directory>指令只能在服务器配置或虚拟主机中使用,不是.htaccess文件中。

如果您使用:

RewriteRule ^([^/.]+)/?$ index.php?uname=$1 [R,L]

每个目录的前缀 ( /home/eamorr/sites/example.com/www) 会自动添加到替换中。因此,删除该<Directory>指令并在开头添加一个斜线:

RewriteEngine on
RewriteRule ^([^/.]+)/?$ /index.php?uname=$1 [R,L]

它会按你期望的方式工作。

相关内容