2014-09-13 2 views
0

Я пытаюсь переписать URL страницы с помощью .htaccess. Я хотел бы преобразовать ссылки, как это (mysite.com/page.php -> mysite.com/page)Переписывание url с .htaccess

Это код, который я использовал в предыдущих сайтах с теми же требованиями

RewriteEngine on 
RewriteCond /%{REQUEST_FILENAME}.php -f 
RewriteRule ^([a-zA-Z0-9_-\s]+)/$ /$1.php 

Но когда я пытаюсь получить доступ к mysite.com/page, он переходит на страницу 404, где mysite.com/page.php покажет страницу.

Может ли кто-нибудь объяснить, если я где-то пропустил настройку? Я поместил файл .htaccess в корне сайта директории и права доступа установлены как 644.

+0

попытался удалить '' '/' '' в начале RewriteCond? – MrTux

ответ

1

Вместо того, чтобы использовать %{REQUEST_FILENAME} который, кстати, у вас есть ненужный / там, я предлагаю вам использовать %{DOCUMENT_ROOT}/$1\.php, вот пример :

Options +FollowSymLinks -MultiViews 

RewriteEngine On 
RewriteBase/

## To internally redirect /anything to /anything.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1\.php -f 
RewriteRule ^([^/]+)$ $1.php [L] 

Кроме того на правиле у вас есть /$, которые снова причинить вам неприятности, как вы хотите, чтобы поймать /page.

Возможно, вы сделали /?, чтобы сделать / необязательным.

Ваш .htaccess фиксированной должен выглядеть следующим образом:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^([a-z0-9_-\s]+)/?$ /$1.php [NC,L] 
Смежные вопросы