.htaccess не работает над Ubuntu 16.04.2 LTS

Я хочу использовать .htaccess для перезаписи php веб-страниц. Или простым способом "Я не хочу использовать .php расширение" для доступа к любой веб-странице.

Файл .htaccess (Ubuntu 14), которая работала отлично:

RewriteEngine on
#remove the need for .php extention
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)$ $1.php

Тот же .htaccess файл не работает после обновления AWS, который находится теперь в Ubuntu 16.04. Я попробовал все как изменение разрешения, включив переписать режим, изменив свойство Directory файла конфигурации от 'AllowOverride Ни один' к 'AllowOverride Все'.

После своего рода эксперимента я нашел, чтобы быть исправлением вышеупомянутое .htaccess файл как ниже, и это хорошо работало. Но здесь это всегда позволяет получать доступ только данный php страницу. Но я не хочу быть конкретным с любым данным php страницу. Я пытался писать regexp также, но не работал. И это всегда перенаправляет к данной странице только.

<IfModule mod_rewrite.c><
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule . index.php [L]
</IfModule>

Может кто-то помогать мне на этом.Заранее спасибо.

2
задан 12 March 2017 в 19:54

3 ответа

Я нашел этот пример, который должен добиться цели:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}.php -f
RewriteRule !.*\.php$ %{REQUEST_FILENAME}.php [QSA,L]

Источник:

https://stackoverflow.com/questions/4026021/remove-php-extension-with-htaccess

https://stackoverflow.com/questions/1992183/how-to-hide-the-html-extension-with-apache-mod-rewrite

2
ответ дан 2 December 2019 в 02:15

Я сталкивался с той же проблемой, вот решение для человечности и апача

Сначала включите модуль, перепишите:

sudo a2enmod rewrite 

И апач перезапуска

sudo systemctl restart apache2

Теперь редактирование для уровня каталога

sudo vim /etc/apache2/sites-enabled/000-default.conf

добавьте эти строки в конце

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

и перезапустите апача снова.

sudo service apache2 restart
2
ответ дан 2 December 2019 в 02:15

Перевод адаптирован из Google Translate

Приветствую У меня была та же проблема на VPS, что и у меня с Ubuntu 16.04

Я хотел развернуть приложение, сделанное в Angular 8 с Apache, я поместил .htaccess в папку моего проекта Angular, и это не сработало, я активировал перезапись a2enmod, он перезапустился, и ни то, ни другое.

Мне удалось это исправить, выполнив следующие простые шаги, которые комментирует BSB

1) выполните команду: sudo nano /etc/apache2/sites-enabled/000-default.conf

2) Введите AllowOverride All в конце файла 000-default.conf , который мы только что открыли в консоли

Очевидно, он должен быть перед меткой

3) Перезагрузите сервер

---- Необязательно -----

  • Кроме того, в моем индексе.html моего Angular-проекта, в теге base поместите имя

base href="/name/"

И в файле .htaccess тоже в конце поместите

RewriteRule ^ /name/index.html

И все готово, это будет работать отлично

----------

Приветствие проблем с VPS, которые противоречат Ubuntu 16.04

Запрос удаленного приложения для Angular 8 с Apache, раскройте .htaccess на ковре из моего проекта Angular и не используйте его, активируйте a2enmod, чтобы переписать повторно и тампоко.

Logré solucionarlo haciendo estos sencillos pasos, que comenta BSB

  1. sudo nano /etc/apache2/sites-enabled/000-default.conf 2. Colocar al final del archivo 000-default.conf que acabamos de abrir en consola

AllowOverride All

Obviamente debe ser antes de la etiqueta

  1. Reiniciamos el Servidor listo

---- Необязательно -----

A parte de esto en mi archivo index.html de mi proyecto Angular en la etiqueta base coloque un nombre, de esta manera

base href="/nombre/"

Y en el archivo .htaccess también, al final colocar

RewriteRule ^ /nombre/index.html

Y listo esto funcionará perfectamente

1
ответ дан 9 May 2020 в 21:51

Другие вопросы по тегам:

Похожие вопросы: