在我的apache配置中,我创建了一个别名:
<IfModule alias_module>
Alias /projecten "C:/Users/Youri/SkyDrive/Projecten"
</IfModule>
<Directory "C:/Users/Youri/SkyDrive/Projecten">
#
# Possible values for the Options directive are "None", "All",
# or any combination of:
# Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
# The Options directive is both complicated and important. Please see
# http://httpd.apache.org/docs/2.4/mod/core.html#options
# for more information.
#
Options Indexes FollowSymLinks
#
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride FileInfo Options
#
# Controls who can get stuff from this server.
#
Require all granted
</Directory>
在文件夹&#39; projecten / mvc&#39;我有一个.htacces文件:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteRule ^(.*) public/$1 [L]
</IfModule>
当我访问我的浏览器http://localhost/projecten/mvc/时,收到错误消息:
在此服务器上找不到请求的URL / Users / Youri / SkyDrive / Projecten / mvc / public /。
当我将文件夹(mvc)复制到我的文档根目录并导航到http://localhost/mvc/时,重写有效..
当我添加到我的项目文件夹中的htaccess文件时:
RewriteBase /projecten/mvc
它有效,但我不想添加RewriteBase,因为当我将它放在文档根目录中时我不需要它...
有人可以告诉我出了什么问题吗?
Apache / 2.4.10(Win64)OpenSSL / 1.0.1j配置PHP / 5.6.4
答案 0 :(得分:0)
这里没有“出错”。您需要指定一个RewriteBase
,因为在您正在使用的设置下,事物才能正常工作。
http://httpd.apache.org/docs/2.2/en/mod/mod_rewrite.html#rewritebase:
当您在per-directory(htaccess)上下文中的替换中使用相对路径时,此指令 required ,除非满足以下任一条件:
- 原始请求和替换位于DocumentRoot下方(而不是通过其他方式,例如Alias可到达)。
- 包含RewriteRule的目录的文件系统路径(以相对替换为后缀)也可用作服务器上的URL路径(这种情况很少见。)
“(而不是通过其他方式可以访问,例如Alias)”就是你在这里所拥有的,所以你需要指定RewriteBase,因为你也在使用你的相对路径取代