2013-09-09 6 views
1

В настоящее время я переписывание всех входящих запросов на * .html на * .php в моей .htaccess:301 Перенаправление * .php в * .html через .htaccess?

RewriteEngine on 
RewriteCond %{HTTP_HOST} ^example\.com$ [NC] 
RewriteRule ^(.*)$ http://www.example.com/$1 [R=301,L] 

RewriteRule ^(.*).html$ $1.php [QSA] 

ErrorDocument 404 /404.html 

Так /something.html переписывается /something.php.

Однако, /something.php по-прежнему напрямую доступен в браузере. Теперь я хочу, чтобы он перенаправлял /something.html, когда люди обращаются к нему в браузере, чтобы избежать 2 разных URL-адресов для одной и той же страницы контента.

Это можно сделать в моем .htaccess? Как? Я пробовал R = 301, но это всегда цикл перенаправления или что-то в этом роде. Любая помощь будет оценена по достоинству. Благодаря!

+0

Можете ли вы указать значение => [R = 301, L]? –

ответ

5

Добавьте это выше вашего RewriteRule ^(.*).html$ $1.php [QSA] правило:

RewriteCond %{THE_REQUEST} \ /(.+)\.php 
RewriteRule^/%1.html [L,R=301] 

Это будет перенаправлять браузер/клиент тот же запрос, но с .html вместо .php.

+0

Удивительно, спасибо! –

+0

Можете ли вы указать значение => [L, R = 301]? –

+1

@PratikJoshi Они [переписывают флаги] (http://httpd.apache.org/docs/current/rewrite/flags.html), «L» означает «последний», который останавливает переписывание для текущей итерации, R "означает« Перенаправление », а 301 - код перенаправления (постоянный). –