Ошибка 500 для чистой переписать мод URL - PullRequest
0 голосов
/ 25 января 2010

Спасибо всем, кто помог мне с моим чистым URL-квестом. Я почти на месте, но хочу лизнуть эту последнюю вещь.

.htaccess

RewriteEngine on

#REMOVE THIS LINE ON SITE LAUNCH!
RewriteBase /~accountName/

#Hide .php extensions for cleaner URLS
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

#calendar-expanded REST-ful URLs
RewriteRule ^calendar-expanded(/.*)?$ calendar-expanded.php$1 [L]

Options All -Indexes

<IfModule mod_security.c>
    SecFilterEngine Off
    SecFilterScanPOST Off
</IfModule>

# propagate php.ini file to all sub-directories
suPHP_ConfigPath /home/accountName/public_html/php.ini

мой рабочий URL

www.example.com/calendar-expanded/4/mother-mother-in-concert/

битый URL

www.example.com/calendar/12/another-band-live/

Модификации для calendar/ не существует. У меня вопрос: нужно ли абсолютно правило для каждой страницы, чтобы избежать внутренних ошибок сервера, если кто-то случайно заходит на неправильную страницу? Неработающий URL является примером этого. Я бы очень хотел, чтобы браузер вместо этого выдал ошибку 404.

Я ищу условие / правило, которое будет охватывать "все остальные" URL-адреса, кроме calendar-expanded. Это выполнимо?

Спасибо. (@Gumbo Я надеюсь, что вы смотрите в вашу сторону!)

Ответы [ 2 ]

2 голосов
/ 26 января 2010

Я мог бы восстановить это поведение и проследить его до этого состояния:

RewriteCond %{REQUEST_FILENAME}\.php -f

Здесь REQUEST_FILENAME содержит только путь файловой системы к calendar в том же каталоге. И к нему добавляется .php - существующий файл, поэтому условие выполняется. Но $1 содержит полный запрошенный URL-путь, который теперь добавлен .php. Это повторяется до тех пор, пока внутренний счетчик не превысит свой предел.

Решением для этого является использование %{REQUEST_FILENAME}.php также в подстановке:

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_FILENAME}.php
0 голосов
/ 26 января 2010

Не могли бы вы создать правило, которое соответствует всему и просто иметь его внизу? Механизм переписывания отдает приоритет правилам в порядке их появления в файле .htaccess.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...