.htaccess 使用mod rewrite重定向

.htaccess 使用mod rewrite重定向,.htaccess,mod-rewrite,url-rewriting,.htaccess,Mod Rewrite,Url Rewriting,我从下面的规则中提取并修改了它(很少),因此在删除php文件扩展名后添加了斜杠 RewriteEngine on RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME}\.php -f RewriteRule ^(.*)/$ $1.php 因此urlDomain.com/file.php看起来像Domain.com/file/ 只要我有一个链接或直接键入Domain.com/file/就可以了,但我想保留所有指向

我从下面的规则中提取并修改了它(很少),因此在删除php文件扩展名后添加了斜杠

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME}\.php -f
RewriteRule ^(.*)/$ $1.php
因此urlDomain.com/file.php看起来像Domain.com/file/

只要我有一个链接或直接键入Domain.com/file/就可以了,但我想保留所有指向php文件的链接。因此,我希望它将某人重定向到Domain.com/file/,如果某人转到Domain.com/file.php

但是当我尝试重定向时(如果我做得正确的话)

但它不会重定向(


我不确定是否正确重定向,或者是否不允许我这样做。任何建议都非常棒。

我不完全确定它如何与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部分)

谢谢您的回答!…但我真的很想使用.htaccess,因为这样我就不必编辑每个文件(这是我想要重定向的唯一原因,或者我也可以更改所有链接),它不起作用(我在使用R=301,L之前就试过了)然后再试一次。
<?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)  );
  }
?>