2015-04-28 4 views
0

Я пытаюсь получить расширение .php, которое не требуется при просмотре файла php. Мой текущий конфиг выглядит следующим образом:Удалить расширение php на сервере apache localhost?

<VirtualHost *:80> 
    DocumentRoot /var/www/server 
    ServerName localhost 

    ErrorLog ${APACHE_LOG_DIR}/error.log 
    CustomLog ${APACHE_LOG_DIR}/access.log combined 

    RewriteRule ^([^/\.]+)/?$ $1.php [L,QSA] 

</VirtualHost> 

Однако, это не работает, как я получаю 404, когда я пытаюсь получить доступ к файлу, как login.php в качестве входа в систему, например. Моя настройка сервера странная, в/var/www/server - символическая ссылка на другую папку Dev/server /. Кроме того, поскольку это localhost, я обращаюсь к нему через localhost/project/login.php.

+0

Для начала «RewriteEngine On»? Это выглядит как хорошая запись на тему: http://alexcican.com/post/how-to-remove-php-html-htm-extensions-with-htaccess/ – ficuscr

+0

Я добавил, что над RewriteRule и все еще то же самое. Я проверю эту ссылку :) –

+0

Хм, хорошо. Поэтому я просто попробовал, что предлагала статья, и это не сработало, но ... У меня есть и другие проекты в моей папке с сервером, и я пробовал их, и они работали. Я думаю, это может быть потому, что у проекта есть точка в названии папки? –

ответ

1

Вы правы, что правило регулярного выражения выглядит так, будто оно не сработает, если URI содержит периоды в пути. Что плохо, поскольку RFC не говорит, что они недействительны.

Вы можете попробовать это:

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteRule ([^\\.]+)$ $1.php [NC,L] 

Это приведет: http://test.com/test/test.test/test.php для запроса как http://test.com/test/test.test/test

Я бы проверить это больше, хотя. Вы можете захотеть взглянуть на .htaccess тестер, как это: http://htaccess.madewithlove.be/

REQUEST_FILENAME может быть выгружена для REQUEST_URI при необходимости в тестировании.

+0

Спасибо! Отлично :) –

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