【问题标题】:modx Revolution 2.3.x FURLs (Friendly URLs) not working on WAMPmodx Revolution 2.3.x FURL(友好 URL)不适用于 WAMP
【发布时间】:2014-12-12 10:10:16
【问题描述】:

我刚刚将我的工作 modx 站点从我拥有的共享托管服务器移到了我的本地系统。 在服务器 (LAMP) 上,友好的 URL 工作正常。 在我的本地计算机 (WAMP) 上,友好的 URL 会产生 404 错误(不过,正如其他人所描述的,实际 URL 看起来是正确的,但它不起作用)。 (具体来说我的本地是windows 8)
服务器 Apache ver= 2.2.29
本地 Apache 版本 = 2.2.25(2.2.29 没有 Windows 安装程序)
服务器上的 PHP= 5.4
本地 PHP= 5.4

重要提示:modx 的所有其他功能似乎在我的本地都可以正常工作。 我确实关注了官方modx instructions 将革命地点从一个地方移动到另一个地方。 此外,指出我在 hosts 文件中添加了一个条目以将域指向 localhost 以使域不会改变可能很有价值……这样,当我移动时,任何依赖于域的东西都不会中断它从我的本地开发环境到服务器。

我所做的研究
在互联网上和在 stackoverflow 上进行了广泛搜索。 因此,我已阅读并尝试了该网站上各种文章中的各种内容,其中最值得注意的是: This one This one & This one 还有其他我没有列出的。 我还阅读了有关 .htacces 设置的更多信息(尽管我对 Rewrites 相当熟悉...)。

我为解决此问题所做的工作
-修改我的 .htaccess
-在 FURL 的系统设置中打开和关闭所有其他设置,但启用/禁用 FURL 的选项除外(System_Settings->Area:Friendly URL)
-我还验证了我安装的 apache 模块与我的服务器/网络主机(特别是 mod_rewrite 以及其他)的相同。
-我还验证了我的本地 PHP 至少具有 modx 所需或推荐的所有必需扩展加载。

我仍在调查这个问题,所以我可能会在收到太多回复之前找到答案,但我认为值得一问。

提前致谢。

更新
我还尝试将所有配置设置移出 .htaccess (除了 RewriteBase 之外,因为将其放入 httpd.conf 会导致 apache 错误,导致 apache 无法加载...它旨在仅进入 .htaccess 文件)。 这也没有帮助。 我还手动删除了缓存文件中的所有内容,这也无济于事,最后我关闭了友好的 URL,验证了我可以访问资源,然后重新打开它们。最后的努力也没有帮助。

【问题讨论】:

    标签: php apache .htaccess mod-rewrite modx


    【解决方案1】:

    好的,所以在等待响应和大量阅读友好 URL 和重写之后(虽然......我真的看不出重写可能是什么问题,因为它在服务器上工作并且没有'无论如何都不会出现错误),我找到了问题的答案。

    回答/修复:
    如果您有 VirtualHost 指令,请将其添加到 Directory 指令中,如下所示:

    <Directory "[same directory as virtual host]">

    指令。 如果您没有 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>

    所以我的猜测是 1. 以上是必要的,因为我已经有许多 VirtualHost 指令(这毕竟是我的开发机器......我实际上有很多 VirtualHost 指令......) 要么 2. 因为 Windows 有不同的 \ 作为路径的一部分(你知道 D:\websitefiles\ 而不是 /var/www/),所以额外的特定目录引用是必要的...... 由于缺少路径或多个可能的路径,也许 Apache 无法理解在哪里应用它......? 对我来说奇怪的部分是目录中的 .htaccess 文件应该告诉 Apache 在哪里应用它,但这不起作用。 要点:我将上述内容放在我的 httpd.conf 中......它可能会回到 .htaccess 但我没有在 .htaccess 中定义我的虚拟主机
    (Apache 2.4 注意:我不知道这将如何在 Apache 2.4 中工作,强烈建议将虚拟主机放入虚拟主机的文件中......我猜这一切可能已经进入那里,一切会像这里一样工作......但我实际上不知道)。

    不管怎样,这行得通。我希望它适用于其他有类似问题的人(注意:我正在与其他人一起在他们的 Windows 7 开发机器上工作时遇到困难......我会让他尝试上述方法,看看它是否修复他的问题对他也是如此,并尽量记得报告)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-15
      • 1970-01-01
      • 2014-04-04
      相关资源
      最近更新 更多