Проблема перезаписи URL в блоге Mango (ошибка 404) - PullRequest
7 голосов
/ 12 мая 2011

Я работаю над настройкой экземпляра Mango Blog на сервере Ubuntu, на котором запущены Apache 2 HTTPD и Tomcat 6 с Railo 3.1.2. Я смог настроить все, пока не начал пытаться переписать URL для URL блога.

Я использовал комбинацию постов Адама Таттла * Джона Сибера, чтобы получить правила переписывания. У меня есть настройки сайта следующим образом:

{Webroot} /. 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]

{апач-дом} / сайты с поддержкой / имя_сайта

<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, то пост появится очень хорошо. Я попробовал правила перезаписи на тестере перезаписи , и это сказало, что перезаписи должны работать нормально. Я очень новичок в переписывании, поэтому я прошу прощения, если это что-то простое.

Ответы [ 3 ]

2 голосов
/ 25 мая 2011

Вставьте ваш файл .htaccess:

Options -Multiviews
0 голосов
/ 21 мая 2011

Ваша проблема может быть связана с вашей RewriteBase.Когда я загрузил ваш пример на тестовый сервер, я увидел в журналах ошибок Apache, что использование RewriteBase работает для меня из-за среды, которую я использовал;однако использование / в вашем случае может не создавать правильный путь.

В журналах ошибок вашего веб-сервера смотрите, какой путь генерируется, когда он говорит, что не может найти ошибку 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, чтобы сделать его правильным путем.

Надеюсь, это поможет.

0 голосов
/ 17 мая 2011

Попробуйте переместить свои правила перезаписи в блок VirtualHost. У меня были странные проблемы с неправильной работой .htaccess с перезаписью.

Я могу ошибаться, но я думаю, что так и происходит.

Apache будет искать / post /, который не существует, и возвращает 404. Он запустит .htaccess, если он существует в / post /, но это не так.

Если правила перезаписи находятся в вашем блоке Directory внутри блока VirtualHost в файле httpd.conf, то 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/

...