apache - 允许覆盖虚拟主机中的路径
问题描述
在 Windows 10 机器上映射到 Z: 驱动器的外部驱动器上有一些 PHP 文件。此代码位于httpd-vhosts.conf
Apache 文件中:
<VirtualHost *:8080>
DocumentRoot "Z:/files/xampp/htdocs"
<Directory "Z:/files/xampp/htdocs">
Options Indexes
Require all granted
</Directory>
</VirtualHost>
手头的任务是允许.htaccess
覆盖上述路径中的文件路径。在httpd.conf
文件中启用了重写模块。该行如下所示:LoadModule rewrite_module modules/mod_rewrite.so
. 我尝试将此代码添加到httpd.conf
文件中:
<Directory "Z:/files/xampp/htdocs/miscellaneous/WebServiceExamples">
AllowOverride All
</Directory>
进行这些更改后,Apache Web 服务器已停止并重新启动。中的代码.htaccess
如下所示:
<IfModule mod_rewrite.c>
# turn rewrite engine on
Options +FollowSymlinks
RewriteEngine on
# map neat URL to internal URL
RewriteRule ^mobile/list/$ RestController.php?view=all [nc,qsa]
RewriteRule ^mobile/show/([0-9]+)/$ RestController.php?view=single&id=$1 [nc,qsa]
</IfModule>
但是,当在 Chrome 地址栏中输入应该由.htaccess
文件中的重写规则处理的 URL 时,结果是找不到对象!错误 404。我在哪里误入歧途?
编辑:
我尝试的另一件事是httpd.conf
恢复其原始状态,然后httpd-vhosts.conf
进行如下修改:
<VirtualHost *:8080>
DocumentRoot "Z:/files/xampp/htdocs"
<Directory "Z:/files/xampp/htdocs">
Options Indexes
Require all granted
</Directory>
<Directory "Z:/files/xampp/htdocs/miscellaneous/WebServiceExamples">
AllowOverride All
</Directory>
</VirtualHost>
停止并重新启动 Apache Web 服务器后,结果仍然和以前一样: 找不到对象!错误 404。
解决方案
想通了。配置文件保持在原始帖子的编辑部分中描述的状态。此链接中的故障排除部分是确定配置文件设置正确的有用指南。
这是在 Chrome 的地址栏中输入的 URL:http://localhost:8080/miscellaneous/WebServiceExamples/SimpleRestfulWebService/mobile/list
。请注意,没有尾部正斜杠。重写规则的.htaccess
编写方式使得尾部正斜杠成为强制性的。当重写规则行被修改以使尾部斜杠可选时,它工作正常。以下是修改后的重写规则:
RewriteRule ^mobile/list/?$ RestController.php?view=all [nc,qsa]
RewriteRule ^mobile/show/([0-9]+)/?$ RestController.php?view=single&id=$1 [nc,qsa]
推荐阅读
- python - 如何跳过一个标签并移动到下一个标签 - 使用 python 抓取网页
- html - HTML 可折叠按钮 - 如何将按钮突出显示为 href?
- apache-spark - 为什么 Spark RDD 为小数据保留更多数量的分区
- android - 如何将项目添加为依赖项?
- ios - 在 swift 5 中从另一个 tableview 控制器调用 tablview 控制器
- python - Pandas 中的列成对重组
- sql - 使用oracle sql查找最小非重复序列
- angular - 绑定后不出现角度图像
- javascript - 将图标添加到 Mapbox-GL (Angular)
- python - Pydev 解释器问题