перенаправление с модом переписать - PullRequest
1 голос
/ 21 июня 2010

Правило ниже, которое я взял из здесь и изменило его (очень мало), чтобы добавить косую черту после удаления расширения файла php.

RewriteEngine on

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

Таким образом, URL 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]

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

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

1 Ответ

0 голосов
/ 21 июня 2010

Я не совсем уверен, как это работает с 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)  );
  }
?>

РЕДАКТИРОВАТЬ: Если вас не волнует, что видит пользователь в адресной строке, просто добавьте [R] (попробуйте убрать часть = 301, L)

...