#.htaccess #webserver
#.htaccess #веб-сервер
Вопрос:
У меня есть файл .htaccess на моем веб-сервере, который удаляет index.php с моего URL. Проблема возникает, когда я хочу получить доступ к файлу .php, расположенному в подкаталоге моего веб-сервера.
Мой файл htacess выглядит следующим образом:
# Turn on URL rewriting
RewriteEngine On
# Installation directory
RewriteBase /
# Protect application and system files from being viewed
RewriteRule ^(?:application|modules|system)b.* index.php/$0 [L]
# Allow any files or directories that exist to be displayed directly
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule .* index.php/$0 [PT]
И теперь, если бы я хотел получить доступ к файлу .php, подобному этому:
http://www.mydomain.com/subfolder/assets/17041f49/tiny_mce/tiny_mce_gzip.php
Сервер вернул ошибку 500.
Что я должен сделать, чтобы исправить это?
Спасибо.
Комментарии:
1. Посмотрите в журналах ошибок сервера. Он сообщит вам, какая часть .htaccess ему не нравится.
2. В файле, скорее всего
tiny_mce_gzip.php
, ошибка, которая вызывает проблему — если вы удалите.htaccess
файл, вы все еще получаете ошибку?3. Я исправил это сейчас, изменив разрешение файла для mydomain.com/subfolder/assets/17041f49 к 555. Теперь все работает. Почему это?
4. Да, даже после удаления .htaccess с веб-сервера он по-прежнему возвращает ошибку 500. Если я изменю tiny_mce_gzip.php поскольку он содержит только echo ‘a’, он по-прежнему не работает.
5. Ну и что, где были разрешения до того, как вы изменили их на 555 (И это довольно странно, обычно хотелось бы, чтобы в каталоге было 755, чтобы владелец также мог в него записывать. Опять же, журналы ошибок расскажут вам, в чем заключается реальная проблема..
Ответ №1:
Может быть, вы могли бы попробовать:
RewriteRule ^(.*).(css|js|xml|ico|png|gif|jpe?g)$ $1.$2 [L]
RewriteRule ^.*$ index.php [L,QSA]
Затем получите запрошенный URL в usig PHP
$url = $_SERVER["REQUEST_URI"];