2013-08-26 2 views
1

Я пытаюсь сделать так, чтобы запросы http://www.domain.tld/folder/filename.php получили 301, перенаправленные на http://www.domain.tld/folder/filename (т. Е. Без php), и у меня есть некоторые трудности с этим.301 перенаправление * .php на non - *. Php

Вот мой .htaccess:

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} !\.php$ 
RewriteRule (.*) $1.php [L] 

RewriteRule (.*)\.php $1 [L,R=301] 

Первый RewriteRule работает, как я ожидал. Второе ... не так много.

В письменных запросов на http://www.domain.tld/folder/filename.php301 получить перенаправлены http://www.domain.tld/home/username/public_html/folder/filename

Если я изменяю, что последний RewriteRule делать /$1 вместо $1 я получаю направлены на http://www.domain.tld/filename и не http://www.domain.tld/folder/filename.

Любые идеи?

Спасибо!

ответ

2

Держите .htaccess, как это для сокрытия .php расширения:

Options +FollowSymLinks -MultiViews 
# Turn mod_rewrite on 
RewriteEngine On 
RewriteBase/

## hide .php extension 
# To externally redirect /dir/foo.php to /dir/foo 
RewriteCond %{THE_REQUEST} ^[A-Z]{3,}\s([^.]+)\.php[\s?] [NC] 
RewriteRule^%1 [R=301,L] 

# To internally forward /dir/foo to /dir/foo.php 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{DOCUMENT_ROOT}/$1.php -f 
RewriteRule ^(.+?)/?$ $1.php [L] 
Смежные вопросы