Ошибка Htaccess с захватом получения переменных и завершающего слеша - PullRequest
0 голосов
/ 03 марта 2012

В моем файле .htaccess есть следующее

    # Use PHP5 Single php.ini as default
    AddHandler application/x-httpd-php5s .php

    Options -Indexes


    # preserve bandwidth for PHP enabled servers
    <ifmodule mod_php4.c>
     php_value zlib.output_compression 16386
    </ifmodule>

    # For security reasons, Option followsymlinks cannot be overridden.
    #Options +FollowSymLinks
    Options +SymLinksIfOwnerMatch
    RewriteEngine On
    RewriteRule ^faq/?$ faq.php
    RewriteRule ^about/?$ about.php
    RewriteRule ^portfolio/(.*)$ portfolio.php?p=$1

            #Error Page___NOT found
    ErrorDocument 404 /notfound.php

В моем портфолио есть только разделы "знаменитости", "свадьбы" и "индустриальные", т. Е. Допустимы только следующие страницы:

    mysite.com/portfolio/celebrity
    mysite.com/portfolio/weddings
    mysite.com/portfolio/industrial

У меня возникают проблемы со страницей «портфолио» в определенных ситуациях: при посещении

    "mysite.com/portfolio/celebrity"
    "mysite.com/portfolio/weddings"
    "mysite.com/portfolio/industrial"

все работает нормально. Однако, если я посещаю

    "mysite.com/portfolio/celebrity/"
    "mysite.com/portfolio/weddings/"
    "mysite.com/portfolio/industrial/"

(обратите внимание на косую черту), Firefox выдает мне следующую ошибку

    Firefox has detected that the server is redirecting the request for this address in a way that will never complete.

Я пытался заменить последнюю строку на

    RewriteRule ^portfolio/(.*)/?$ portfolio.php?p=$1

, которая тоже не помогает, иотображает вышеупомянутую ошибку.

Visiting

    "mysite.com/portfolio/some-non-existent-portfolio"

ИЛИ

    "mysite.com/portfolio/some-non-existent-portfolio/"

не перенаправляет на "notfound.php"

1 Ответ

3 голосов
/ 04 марта 2012

Хорошо, решил эту проблему благодаря этой веб-странице: http://www.phpfreaks.com/forums/index.php?topic=167839.0

Я изменил соответствующую строку на

    RewriteRule ^portfolio/([a-zA-Z]+)/?$ portfolio.php?p=$1

Теперь все работает отлично, включая отображение notfound.php при портфолиоТип посещения не существует.Надеюсь, это кому-нибудь поможет.

...