mod_rewrite 在 Linux 中有效,但在 Windows 中无效
Posted
技术标签:
【中文标题】mod_rewrite 在 Linux 中有效,但在 Windows 中无效【英文标题】:mod_rewrite works in Linux but not in Windows 【发布时间】:2014-10-23 02:40:46 【问题描述】:大家都知道 Apache 和 mod_rewrite 的黑魔法……
我也有问题……
我刚刚从这里 https://www.apachelounge.com/download/win64/ 下载了 Apache 2.4 并使用这一行启用了 mod_rewrite
LoadModule rewrite_module modules/mod_rewrite.so
httpd.exe -v 的输出
Server version: Apache/2.4.10 (Win64)
Apache Lounge VC10 Server built: Jul 19 2014 12:25:58
我的 httpd.conf http://pastebin.com/TDHpurBi
还有我的 .htaccess http://pastebin.com/f6KV3Zd2
.htaccess 用于我的 MVC 框架
提前感谢您的帮助
PS:.htaccess 与
一起工作就像一个魅力Server version: Apache/2.4.7 (Win32)
Apache Lounge VC10 Server built: Nov 26 2013 15:46:56
来自 Uniserver
PS2:我忘了说,我在 Linux 下运行了 .htaccess,并在 httpd.conf 中启用了 AllowOverride。所以它可能只是一个 Apache-Windows 问题。
【问题讨论】:
我想服务器配置会有所不同。点发布很少(也不应该)破坏功能。 我忘了说,我让 .htaccess 在 Linux 下运行。 :// 确保使用相关信息/详细信息更新问题。 我敢打赌这是因为ServerRoot
、DocumentRoot
和 Directory
指令的相对路径。尝试使用绝对路径,这应该适用于两个操作系统
【参考方案1】:
你必须考虑 .htaccess 的别名和位置
因此,例如,如果您创建了一个名为“mywebsite”的别名(因此您将打开 http://localhost/mywebsite 以访问主页)但您在子文件夹中拥有 .htaccess,例如 /api 文件夹,您需要使用这个 RewriteBase 指令:
RewriteBase /mywebsite/api
然后重启apache
【讨论】:
【参考方案2】:我解决了这个问题!
DocumentRoot "$SRVROOT/htdocs"
<Directory "$SRVROOT/htdocs">
部分!
还有设置
AllowOverride All
这会解决你的问题!
【讨论】:
你能解释一下它是如何工作的吗?以上是关于mod_rewrite 在 Linux 中有效,但在 Windows 中无效的主要内容,如果未能解决你的问题,请参考以下文章
mod_rewrite 适用于 .htaccess 文件,但不适用于 apache2.conf
如何在 ubuntu 上的 LAMP 中启用 mod_rewrite? [关闭]