【问题标题】:Apache2 - Friendly URLsApache2 - 友好的 URL
【发布时间】:2013-06-02 23:20:43
【问题描述】:

我正在使用此代码来创建友好的网址:

rewriteengine on
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]

它应该可以工作,所以我可以转到http://www.mywebsite.com/test,但是当我转到我的网址时,它只显示404 Not Found,但日志文件中没有出现错误。

我在 Debian x86_64 上使用 Apache2,我的问题是我是否需要更改任何设置才能使友好 url 正常工作?

【问题讨论】:

    标签: .htaccess url apache2


    【解决方案1】:

    有很多可能性。以下是一些(其中一些来自SmartWebDeveloper.com):

    • 确保.htaccess 文件的名称正确。确保您没有忘记开头的.,并且文件名全部小写。

    • 确保AllowOverride 设置正确。如果查看配置文件(httpd.conf,可能还有/etc/apache2/ 目录中的其他配置文件),您可能会看到这样的一行:AllowOverride None。该行可防止您的 .htaccess 文件更改内容。 (注意这行可能在服务器配置的多个地方出现——包括主配置、web根目录配置(可能在/etc/apache2/sites-available/default),以及sites-enabled文件夹中的任何VHost配置文件,所以你需要找到一个实际上会改变这个网站的东西。)把它改成AllowOverride FileInfo(如果你只需要重写)或AllowOverride All(如果你打算用你的.htaccess做其他事情。)一个完整的AllowOverride 的描述位于 http://httpd.apache.org/docs/current/mod/core.html#allowoverride

    • 确保启用了重写模块。如果您的重写配置包含在<IfModule mod_rewrite.c></IfModule> 标记中,或者如果您的Apache 配置为不报告.htaccess 错误,您将看不到模块被禁用的任何地方。要启用它,请使用 a2enmod rewrite 并重新启动您的 Apache 服务器。

    【讨论】:

    • 我会在我糟糕的主机修复我的服务器后立即尝试这个。
    • 我现在可以正常工作了,谢谢。当有人转到这样的网址时,您会建议什么让我的 php 包含文件加载 mysite.com/test/test - 问题在于它位于不同的导演中,因此包含文件位于不同的位置。
    • @PHPDEV 有几种不同的方法可以做到这一点,但这里的 cmets 不适合讨论它。在网站上查看更多信息,如果需要帮助,请提出其他问题。
    猜你喜欢
    • 1970-01-01
    • 2011-08-25
    • 2010-09-07
    • 2012-05-27
    • 2013-08-31
    • 2012-01-15
    • 2012-06-03
    • 2011-01-04
    相关资源
    最近更新 更多