2010-06-20 50 views
1

以下规则我从here中进行了修改并对其进行了修改(非常少),因此在删除php文件扩展名后添加了斜杠。使用mod-rewrite重定向

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] 

但它不重定向。 :(

我不知道如果我正确地重定向或如果我根本不能做到这一点。任何意见是真棒。

回答

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) ); 
    } 
?> 

编辑:如果你不关心用户看到在地址栏中什么,只是添加一个[R](尝试拿走= 301,L部分)

+0

感谢您的回答!...但我真的会喜欢使用.htaccess,因为那样我就不必编辑每个文件(这是我想要重定向的唯一原因,或者我也可以更改我的所有链接) – SuperPaperSam 2010-06-20 21:09:20

+0

请参阅编辑的响应。尽管如此,这还未经过测试。 – 2010-06-21 04:09:13

+0

它不起作用(我试过,在我使用R = 301之前,L)并且再试一次。 – SuperPaperSam 2010-06-21 14:30:29