.htaccess不在现场工作,但在localhost上工作?

时间:2011-07-27 16:07:10

标签: .htaccess mod-rewrite expressionengine

我正在使用ExpressionEngine并希望从我的网址中删除index.php。我将此.htaccess文件保存在根文件夹中。它在localhost上运行得很好但是当我将它上传到服务器时它不起作用。地址栏中显示正确的URL,但页面仍保留在主页上。有什么提示吗?

<IfModule mod_rewrite.c>
    # Enable Rewrite Engine
    # ------------------------------
    RewriteEngine On
    RewriteBase /
    # Redirect index.php Requests
    # ------------------------------
    RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC]
    RewriteCond %{THE_REQUEST} ^GET
    RewriteRule ^index\.php(.+) $1 [R=301,L]
    # Standard ExpressionEngine Rewrite
    # ------------------------------
    RewriteCond $1 !\.(css|js|gif|jpe?g|png) [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
</IfModule>

1 个答案:

答案 0 :(得分:1)

确保您的AllowOverride Directive in Apache配置为允许.htaccess个文件,并且您的服务器已安装并激活mod_rewrite

在Mac OS X上,您可以在/etc/apache2/httpd.conf找到此文件。查找<Directory>指令并将其更改为:

<Directory />
    Options FollowSymLinks
    AllowOverride All
    Order deny,allow
</Directory>

您需要重启Apache才能读取新配置:

sudo /usr/sbin/apachectl restart

如果您更喜欢使用GUI重启Apache,请转到 Apple&gt;系统偏好设置&gt;共享并切换网络共享服务旁边的复选框。

如果您使用的是Windows或任何类型的Linux,则适用相同的方法,但Apache配置可能位于不同的位置,尤其是在您使用WAMPMAMP时。 / p>


另外,作为参考,EllisLab对Removing index.php from ExpressionEngine URLs的“官方支持的方法”如下:

<IfModule mod_rewrite.c>
    RewriteEngine On
    # Removes index.php
    RewriteCond $1 !\.(gif|jpe?g|png)$ [NC]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^(.*)$ /index.php/$1 [L]
    # If 404s, "No Input File" or every URL returns the same thing
    # make it /index.php?/$1 above (add the question mark)
</IfModule>