Проверьте, существует ли файл в каталоге, или запросите другой - PullRequest
1 голос
/ 06 марта 2011

Есть ли правило .htaccess, которое проверяет, не существует ли запрошенный файл в "mydir", и получает index.php?get=mydir

Я пробовал это, но не работает:

RewriteCond mydir/%{REQUEST_FILENAME} -f
RewriteRule ^(.*)$ /index.php?get=$1 [L]

Ответы [ 2 ]

1 голос
/ 28 февраля 2014

Чтобы обслужить страницу, если она существует, добавьте другую, добавьте в ваш файл .htaccess следующее:

Options +FollowSymLinks -MultiViews

RewriteEngine On
RewriteRule .+ - [L]

# serve file if exists
RewriteCond %{DOCUMENT_ROOT}/cache/index.html -f 
RewriteRule ^(.*)$ /cache/index.html [L,QSA]

# else serve other file
RewriteCond %{DOCUMENT_ROOT}/cache/index.html !-f 
RewriteRule ^(.*)$ /index.html [L]

Не забывайте, что для этого вам нужно иметь AllowOverride All в вашем файле vhosts.

1 голос
/ 06 марта 2011

Если вы используете Apache, я бы предложил использовать это:

http://httpd.apache.org/docs/2.0/mod/mod_actions.html

Возможно, это не лучший подход, но он работает для меня.

По сути, вы настроите скрипт, через который Apache будет отправлять все запросы.

# Files of a particular file extension
AddHandler handler .html
Action handler /handler.php

Каждый раз, когда запрашивается html-файл, Apache запускает handler.php.

Внутри handler.php вы можете использовать $_SERVER, чтобы определить запрошенный файл, проверить, существует ли он, и включить его, если он действительно завершился. Если его не существует, делай все, что тебе нужно.

...