我最近刚从我所拥有的共享托管服务器将我的工作modx站点移动到我的本地系统。
在服务器(LAMP)上友好的URL工作正常。
在我的本地计算机(WAMP)上,友好的URL会产生404错误(但是,正如其他人所描述的那样,实际的URL看起来是正确的,它只是不起作用)。
(具体来说,我的本地是windows 8)
服务器Apache ver = 2.2.29
本地Apache ver = 2.2.25(2.2.29没有Windows安装程序)
服务器上的PHP = 5.4
PHP on local = 5.4
重要提示:modx的所有其他功能似乎在我的本地工作正常。 我确实按照官方modx instructions将革命遗址从一个地方移到另一个地方。 此外,指出我在hosts文件中添加了一个条目以将域指向localhost可能是有价值的,因此域名不会发生变化......以这种方式取决于域的任何内容都会赢得&t; t当我将它从本地开发环境移动到服务器时中断。
我为研究所做的工作:
在互联网上广泛搜索这里是stackoverflow。
所以我已经阅读并尝试了本网站上各种文章的各种内容,其中最值得注意的是:
This one
This one
&安培;
This one
以及我没有列出的其他人。
我还阅读了更多关于.htacces设置的内容(虽然我对Rewrites非常熟悉......)。
我尝试解决此问题:
- 我的.htaccess的修改
- 打开和关闭FURL的系统设置中的所有其他设置,但启用/禁用FURL的选项除外(System_Settings-> Area:Friendly URL)
- 我还验证了我安装的apache模块与我的服务器/ web主机模块相同(特别是mod_rewrite,还有其他模块)。
我 - 我还验证了我的本地PHP至少具有所需的所有扩展加载所需的或推荐用于modx。
我仍然在研究这个问题,所以在我做出很多回应之前我有机会找到答案,但我认为值得一提。
提前致谢。
更新: 我还尝试将所有配置设置移出.htaccess(除了RewriteBase,因为将它放在httpd.conf中导致apache错误导致apache无法加载......它的设计只进入.htaccess文件)。 这也没有帮助。 我还手动删除了缓存文件中的所有内容,这也没有帮助& amp;最后我关闭了友好的URL,验证我可以获取资源,然后重新打开它们。最后的努力也无济于事。
答案 0 :(得分:1)
好的,所以经过大量的等待回复和大量阅读友好的URL&重写(虽然......我真的无法看到重写可能是什么问题,因为它在服务器上运行并且无论如何都不会出现错误),我找到了问题的答案。
<强>答案/修复:强>
如果您有VirtualHost指令,请在Directory指令中添加此指令,如下所示:
<Directory "[same directory as virtual host]">
&#13;
指令。 如果您没有VirtualHost指令,请尝试添加一个,然后添加Directory指令。
示例强>
<VirtualHost *:80>
ServerName somedomain.com
DocumentRoot "D:/websitefiles/websitefilesforsomedomain"
</VirtualHost>
<Directory "D:/websitefiles/websitefilesforsomedomain">
Options +SymLinksIfOwnerMatch
RewriteEngine On
#####RwriteBase is removed because it isn't allowed in the httpd.conf instead it must be in a .htaccess file
#RewriteBase /
#NOTE: there were other things here that are part of the .htaccess provided by modx that I am using but they are not relevant to the friendly URLs
# The Friendly URLs part
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /index.php?q=$1 [L,QSA,NC]
</Directory>
&#13;
所以我的猜测是
1.以上是必要的,因为我已经有了一些VirtualHost指令(毕竟这是我的开发机器......我实际上有很多VirtualHost指令...)
要么
2.因为Windows有不同的\作为路径的一部分(你知道D:\ websitefiles \而不是/ var / www /),额外的特定目录引用是必要的...
也许Apache无法理解在哪里应用这个,因为缺少路径或多条可能的路径......?
对我来说奇怪的部分是目录中的.htaccess文件应该有TOLD Apache在哪里应用它但是没有用。
重点:我把上面的内容放在我的httpd.conf中...它可能会回到.htaccess但是我没有在.htaccess中定义我的虚拟主机
(Apache 2.4注意:我不知道这在Apache 2.4中是如何工作的,强烈建议虚拟主机进入虚拟主机的文件......我在猜测这一切都可能已经存在,一切都会像这里一样......但我实际上并不知道。)
无论如何这很有效。我希望它适用于遇到类似问题的其他人(注意:我正在与其他人一起工作,因为他们在使用Windows 7开发机器时遇到了困难...我会让他尝试以上操作并查看是否它也为他解决了他的问题,并试着记得报告回来。)