我在我的开发机器上使用Wamp开发项目。这是我的.htaccess:
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?$1 [L]
RewriteBase /project/
这是放在localhost / project中的,所以任何像localhost / project / something这样的请求都被路由到localhost / project / index.php / something
但是,它们被路由到localhost / index.php / something
我怀疑它与我如何使用RewriteBase有关。我该如何解决?
答案 0 :(得分:3)
您需要删除规则中的前导斜杠:
# no slash---------v
RewriteRule ^(.*)$ index.php?$1 [L]
Apache猜测RewriteRule
的目标是URL路径还是文件路径。当它以斜杠开头时,它假定它是一个URL路径并且它是绝对的,所以它将转到文档根目录的index.php。没有斜杠,它要么猜测文件路径,要么使用重写基础来帮助确定使用哪个。
您还应该将RewriteBase
指令移到规则之上。
答案 1 :(得分:1)
为什么不把基数放在重写中呢?
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /project/index.php?$1 [L]
编辑:
这个问题可能会对您有所帮助:htaccess RewriteBase