Как использовать .htaccess на Ubuntu 14.04.2 LTS? PHP

1

Я новичок. Я использую Ubuntu 14.04.2, и я создал файл .htaccess в каталоге /var/www/example.com/.htaccess. Но мой скрипт hello.php не работает и вместо этого возвращает error 500 internal server error.

Первый шаг:

1. enabling mod-rewrite using 
sudo a2enmod rewrite

2. change config
sudo nano /etc/apache2/sites-available/000-default.conf

<Directory "/var/www">
    AllowOverride All
</Directory>

3. restart apache2
sudo service apache2 restart

4. create .htaccess in sub folder
sudo nano /var/www/example.com/.htaccess

Я хочу.htaccess скрытый.php, такой как "www.example.com/aaa.php" на "www.example.com/aaa/"

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1 [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule ^ %{REQUEST_URI}.php [L]
  • 0
    Когда вы получаете 500 Internal Server Error , вы можете проверить свои журналы ошибок Apache, чтобы обычно найти более подробный отчет о том, что происходит.
  • 0
    Иногда разрешение доступа также приводит к таким 500 внутренним ошибкам сервера в Ubuntu ... Перейдите в терминал www и «cd» в свой каталог www и попробуйте выполнить «sudo chmod 755 -R example.com» и попробуйте, если это работает ...
Теги:
.htaccess
mod-rewrite

1 ответ

0
Лучший ответ

Вы можете попробовать несколько вещей. Во-первых, вы не включаете конечную косую черту в своем перенаправлении. Во-вторых, -f отношении переменной %{REQUEST_FILENAME} не будет работать, потому что она нечеткая и будет обрабатывать информацию о пути. Поэтому постарайтесь:

Options +FollowSymLinks -MultiViews
# Turn mod_rewrite on
RewriteEngine On
RewriteBase /

## hide .php extension
# To externally redirect /dir/foo.php to /dir/foo
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php [NC]
RewriteRule ^ %1/ [R,L,NC]

## To internally redirect /dir/foo to /dir/foo.php
RewriteCond %{DOCUMENT_ROOT}/$1.php -f
RewriteRule ^(.*?)/?$ $1.php [L]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню