URL重写Mango博客问题(404错误)

时间:2011-05-12 19:16:52

标签: mod-rewrite coldfusion apache2

我正在使用运行Apache 2 HTTPD的Ubuntu服务器和使用Railo 3.1.2的Tomcat 6设置Mango Blog实例。在我开始尝试为博客URL实现URL重写之前,我能够完成所有设置。

我使用了Adam Tuttle'sJohn Sieber's帖子的组合来获取重写规则。我的网站设置如下:

{}根目录/。htaccess的

RewriteEngine on
RewriteBase /
# archives rule must be located before page rule for paging to work correctly
RewriteRule archives/(.*)$              archives.cfm/$1 [PT,L,NC]
RewriteRule page/(.*)$                  page.cfm/$1 [PT,L,NC]
RewriteRule post/(.*)$                  post.cfm/$1 [PT,L,NC]
RewriteRule author/(.*)$                author.cfm/$1 [PT,L,NC]

{apache的家庭} /网站启用/网站名称

<VirtualHost *:80>
        ServerAdmin *******

        DocumentRoot /var/www/******/www
        ServerName mango.*****.com
        DirectoryIndex index.cfm

        <Directory /var/www/*******.com/www/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /var/log/apache2/error-*******_com.log

        # Possible values include: debug, info, notice, warn, error, crit,
        # alert, emerg.
        LogLevel warn

        CustomLog /var/log/apache2/access-********_com.log combined

        ProxyPreserveHost Off
        ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://********.com:8009/

</VirtualHost>

当我在网站上访问/ post / hello-world访问博客文章时,我收到404错误。如果我去/post.cfm/hello-world这个帖子就好了。我尝试了对rewrite tester的重写规则,并说重写应该可以正常工作。我很难重写,所以如果这很简单,我会道歉。

3 个答案:

答案 0 :(得分:2)

输入您的.htaccess文件:

Options -Multiviews

答案 1 :(得分:0)

尝试将重写规则移至VirtualHost块。我有一些奇怪的问题.htaccess无法正常工作/重写。

我可能在这里错了,但这就是我认为发生的事情。

Apache会查找/ post /,它不存在并返回404.如果它存在于/ post /中,它会运行.htaccess,但它不会。

如果重写规则位于httpd.conf文件中VirtualHost块内的目录块中,则Apache知道重定向而不是查找/ post /。

<VirtualHost *:80>
    ServerAdmin *******

    DocumentRoot /var/www/******/www
    ServerName mango.*****.com
    DirectoryIndex index.cfm

    <Directory /var/www/*******.com/www/>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride all
            Order allow,deny
            allow from all

            RewriteEngine on
            RewriteBase /
            # archives rule must be located before page rule for paging to work correctly
            RewriteRule archives/(.*)$              archives.cfm/$1 [PT,L,NC]
            RewriteRule page/(.*)$                  page.cfm/$1 [PT,L,NC]
            RewriteRule post/(.*)$                  post.cfm/$1 [PT,L,NC]
            RewriteRule author/(.*)$                author.cfm/$1 [PT,L,NC]
    </Directory>

    ErrorLog /var/log/apache2/error-*******_com.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/apache2/access-********_com.log combined

    ProxyPreserveHost Off
    ProxyPassMatch ^/(.+\.cf[cm])(/.*)?$ ajp://********.com:8009/

答案 2 :(得分:0)

您的问题可能与您的RewriteBase有关。当我将你的例子加载到测试服务器上时,我在Apache的错误日志中看到,由于我所使用的环境,使用RewriteBase对我有用;但是,在您的情况下使用/可能无法创建正确的路径。

在您的Web服务器错误日志中,查看当它无法找到404错误时生成的路径。可能,它会说:

[21/May/2011:17:29:20 +0000] [error] [client #.#.#.#] File does not exist: /path/to/something/not/quite/right/post.cfm/hello_world

按照路径确保它实际上引导您到* .cfm文件所在的实际服务器位置。然后只需修改RewriteBase即可使其成为正确的路径。

希望有所帮助。