Назад | Перейти на главную страницу

htaccess: как переписать, чтобы очистить URL-адреса и перенаправить старые URL-адреса на новые чистые?

С помощью htaccess я пытаюсь очистить URL-адреса своих сайтов. Я использую очень простые URL-адреса, например: www.mysite.com/pagename.php ("pagename" - переменная).

Я хочу, чтобы www.mysite.com/pagename отображал содержимое /pagename.php
Итак, это сейчас в моем htaccess-файле:

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

Но я также хочу, чтобы мои старые URL-адреса (/pagename.php) при вызове переписывались на www.mysite.com/pagename.

Как это сделать? Не могу понять (все время петли) ...

Заранее спасибо!

Добавьте еще один блок, чтобы определить перезапись:

Options +FollowSymlinks
RewriteEngine On

RewriteBase /

RewriteRule ^([^\.]+)\.php$ $1 [NC,R=301,L]

RewriteRule ^([^\.]+)$ $1.php [NC,PT,L]

Обратите внимание, что RewriteBase здесь очень важно. (См. Документацию по адресу http://httpd.apache.org/docs/current/mod/mod_rewrite.html#rewritebase) - иначе ваши URL-адреса будут переписаны на что-то вроде <hostname>/var/www/pagename.php вместо ожидаемого <hostname>/index.php.