Использование Mod-Rewrite для изменения путей к файлам

#.htaccess #mod-rewrite

#.htaccess #mod-перезапись

Вопрос:

Я искал как в Google, так и в stackoverflow более 48 часов, и я не нашел похожего вопроса / решения; следовательно, я прошу о помощи.

Если я хочу переписать URL-адреса, например, http://localhost/filename для получения filename.php (такой, который localhost/aboutus извлекает aboutus.php , localhost/contact извлекает contact.php и т. Д.).

Как мне это сделать? Я не хочу писать правило для каждой из страниц; Я хочу, чтобы «имя файла» было динамическим, чтобы одно правило работало для всех страниц в определенной папке.

Я пытался:

 RewriteRule ^(.*)/?$ $1.php
  

В файле .htaccess, и я продолжаю получать ошибку 500.
Спасибо.

Весь файл содержит это:
RewriteEngine на
RewriteBase /
RewriteRule ^(.*)/?$ $1.php

Это все, что содержит файл

Комментарии:

1. Опубликуйте все. файл htaccess, пожалуйста. Правило должно работать.

2. Я изменил вопрос, чтобы включить содержимое файла. Спасибо

Ответ №1:

Ошибка 500 может иметь множество причин — есть ли способ получить больше информации об этом?

В любом случае, возможно, ваша проблема заключается в жадном подходе (.*) и вашей обработке конечной косой черты, которая может быть там или нет.

Попробуйте

 RewriteRule ^([_a-zA-Z0-9]*)/?$ $1.php 
  

вместо этого, который будет соответствовать только символам внутри [] и не будет содержать ‘/’.

Вы можете проверить свои правила перезаписи здесь: http://martinmelin.se/rewrite-rule-tester /

Комментарии:

1. Большое спасибо; это сделало свое дело. Жадный. * был тем, кто все испортил для меня.