2014-11-27 4 views
0

Я работаю на сервере apache2. Я пытаюсь отобразить веб-страниц на моем сайте без расширения файла .php, используя следующий файл .htaccess:Mod rewrite не работает на apache2

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)$ $1.php 


# 1 ---- Establish a custom 404 File not Found page ---- 

ErrorDocument 404 /filenotfound.php 

# 2 ---- Prevent directory file listing in all of your folders ---- 

IndexIgnore * 

Он просто не работает. Я по-прежнему вижу мои веб-страницы с расширением .php в моем браузере.

У меня есть мод модуль переписан загружен, а также были внесены изменения в apache2.conf файле следующим образом:

<Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
     Require all denied 
</Directory> 

<Directory /usr/share> 
     AllowOverride None 
     Require all granted 
</Directory> 

<Directory /var/www/> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
</Directory> 

Кроме того, мой файл .htaccess делает другую работу (то есть перенаправление 404 на filenotfound.php) без любая проблема. Итак, почему это правило перезаписи не работает? Как я могу отлаживать файл .htaccess?

+0

отладки Htaccess с: http://htaccess.madewithlove.be/ редактировать, а запрос файла не поддерживается атм - но отличный инструмент для общих вопросов отладки. – dognose

ответ

0

Я по-прежнему вижу мои веб-страницы с расширением .php в своем браузере.

Ну, у вас даже нет правила для перенаправления запроса с .php на URL без него.

Есть свои правила, как это:

# 1 ---- Establish a custom 404 File not Found page ----  
ErrorDocument 404 /filenotfound.php 

# 2 ---- Prevent directory file listing in all of your folders ----  
IndexIgnore * 
RewriteEngine On 

## hide .php extension 
# To externally redirect /dir/file.php to /dir/file 
RewriteCond %{THE_REQUEST} \s/+(.+?)\.php[\s?] [NC] 
RewriteRule^/%1 [R=302,L,NE] 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f [NC] 
RewriteRule ^(.+?)/?$ /$1.php [L] 
+0

Спасибо за помощь. Теперь он показывает URL-адрес без расширения файла. :) Но это говорит filenotfound. Так что я хочу, когда я открываю /dir/file.php, браузер показывает url как/dir/file, но он по-прежнему показывает фактический /dir/file.php. Я очень смущен здесь. – user2850305

+0

Этот код уже делает оба. Просто убедитесь, что этот код помещен в 'DocumentRoot' не в какой-либо подкаталоге. – anubhava

+0

Ну, это только половина задачи для меня. Я попытался удалить последнюю часть вашего кода, и он все еще выполняет эту половину задачи (т.е. переписывает url без .php). Но после этого он пытается найти файл с расширением .html, то есть ищет /dir/file.html показать, а когда, если его нет, тогда придет 404. Итак, можем ли мы найти его /dir/file.php вместо /dir/file.html – user2850305

Смежные вопросы