2010-06-20 6 views
1

Следующее правило я взял с here и изменил его (очень мало), поэтому он добавляет косую черту после удаления расширения php-файла.redirecting with mod-rewrite

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)/$ $1.php 

Так гиперссылка Domain.com/file.php будет выглядеть Domain.com/file/

И это прекрасно работает до тех пор, пока у меня есть ссылка или ввести непосредственно Domain.com/file/, но я хочу сохранить все свои ссылки на свои php-файлы. Поэтому я хочу, чтобы перенаправить кого Domain.com/file/ если кто-то идет Domain.com/file.php

Но когда я пытаюсь перенаправить (если я делаю это правильно)

RewriteEngine on 

RewriteCond %{REQUEST_FILENAME} !-d 
RewriteCond %{REQUEST_FILENAME}\.php -f 
RewriteRule ^(.*)/$ $1.php [R=301,L] 

Но он не перенаправляет. :(

Я не уверен, если я перенаправлять правильно или если я просто не позволили сделать это. Любой совет является удивительным.

ответ

0

Я не совсем уверен, как это работает с HTAccess , но вы всегда можете просто использовать PHP сделать этот файл и включить его в верхней части всех страниц:.

<?php  
    $page = substr($_SERVER["SCRIPT_NAME"],strrpos($_SERVER["SCRIPT_NAME"],"/")+1); 
    if(substr($page, -4)=='.php'){ 
    $pageURL = 'http'; 
    if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";} 
     $pageURL .= "://"; 
    if ($_SERVER["SERVER_PORT"] != "80") { 
     $pageURL .= $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"]; 
    } else { 
     $pageURL .= $_SERVER["SERVER_NAME"]; 
    } 
    header("Location: $pageURL/" + substr($page, 0, -4) ); 
    } 
?> 

EDIT: Если вы не заботитесь о том, что пользователь видит в адресной строке, просто добавьте [R] (попробуйте убрать = 301, L часть)

+0

Спасибо, что ответили! ... Но я действительно как использовать .htaccess, потому что тогда мне не придется редактировать каждый файл (это единственная причина, по которой я хочу перенаправить, или я мог бы изменить все мои ссылки) – SuperPaperSam

+0

См. отредактированный ответ. Но это непроверено. –

+0

Не работает (я пробовал это, прежде чем использовал R = 301, L), и попробовал снова. – SuperPaperSam