【问题标题】:apache .htaccess rewrite - can I move this into httpd.confapache .htaccess 重写 - 我可以把它移到 httpd.conf
【发布时间】:2013-06-12 23:58:13
【问题描述】:

下面是我在 apache 2.2 的 .htaccess 文件中拥有的唯一代码。

我了解到使用.htacess 会影响性能,如果可以用完httpd.conf,效果会更好。因此我可以将其添加到httpd.conf 中吗?如果是这样,我会把它放在哪里?

是否需要为每个需要它的主机(在我的情况下是很多主机)进入 VirtualHost,或者它是否可以一般地进入 httpd.conf 以便适用于所有主机?

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-l
    RewriteRule ^(.*)$ index.php?/$1 [L]
</IfModule>

【问题讨论】:

    标签: apache .htaccess httpd.conf


    【解决方案1】:

    .htaccess 提供目录配置,而 httpd.conf 提供整体配置。当然,您可以将内容从.htaccess 移动到httpd.conf。 您可以在此处找到有关 .htaccess 的更多信息:Apache HTTP Server Tutorial: .htaccess files

    以您的 .htaccess 为例:

    /www/htdocs/example 中 .htaccess 文件的内容

    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteCond %{REQUEST_FILENAME} !-f
        RewriteCond %{REQUEST_FILENAME} !-d
        RewriteCond %{REQUEST_FILENAME} !-l
        RewriteRule ^(.*)$ index.php?/$1 [L]
    </IfModule>
    

    httpd.conf 文件中的部分

    <Directory /www/htdocs/example>
        <IfModule mod_rewrite.c>
            RewriteEngine on
            RewriteCond %{REQUEST_FILENAME} !-f
            RewriteCond %{REQUEST_FILENAME} !-d
            RewriteCond %{REQUEST_FILENAME} !-l
            RewriteRule ^(.*)$ index.php?/$1 [L]
        </IfModule>
    </Directory>
    

    【讨论】:

    • 是的,当然。引用上述网站:如果您有权访问 httpd 主服务器配置文件,则应完全避免使用 .htaccess 文件。使用 .htaccess 文件会降低 Apache http 服务器的速度。您可以在 .htaccess 文件中包含的任何指令都最好设置在 Directory 块中,因为它具有相同的效果并具有更好的性能。
    【解决方案2】:

    每个虚拟主机都需要指定自己的重写规则,除非:

    1. 您在每个 VirtualHost 中指定 RewriteOptions inherit
    2. 您在每个 VirtualHost 中使用 include 指令

    来源:https://httpd.apache.org/docs/2.2/mod/mod_rewrite.html#RewriteEngine

    请注意,虚拟主机不会继承重写配置

    【讨论】:

      【解决方案3】:

      根据 Apache 文档,您可以将配置放在 &lt;Directory&gt;-block 内的 .htaccess 中。 http://httpd.apache.org/docs/2.2/howto/htaccess.html

      如果您有权访问 httpd 主服务器配置文件,则应完全避免使用 .htaccess 文件。使用 .htaccess 文件会降低 Apache http 服务器的速度。您可以在 .htaccess 文件中包含的任何指令都最好设置在 Directory 块中,因为它具有相同的效果并具有更好的性能。

      为了简化管理,我将重写指令放在一个单独的文件中,然后包含在每个虚拟主机中。它应该可以工作。

      【讨论】:

        猜你喜欢
        • 2012-10-08
        • 2010-12-04
        • 2014-02-01
        • 2019-03-24
        • 1970-01-01
        • 2014-09-01
        • 2016-05-03
        • 2012-03-07
        相关资源
        最近更新 更多