以不同方式重定向各个页面

时间:2014-02-16 16:00:52

标签: php regex apache .htaccess mod-rewrite

我的大部分页面(第1,2,3页)不需要通过PHP解析,但是,第4页和第5页都是如此。对于PHP解析的页面,我希望用最多(3)个目录(page,g1和g2)重写URL。希望下表能说明这一点。

http://mydomain.com/          => http://mydomain.com/page1.html
http://mydomain.com/page1     => http://mydomain.com/page1.html
http://mydomain.com/page2/    => http://mydomain.com/page2.html
http://mydomain.com/page3     => http://mydomain.com/page3.html

http://mydomain.com/page4     => http://mydomain.com/main.php?page=page4
http://mydomain.com/page4/x/  => http://mydomain.com/main.php?page=page4&g1=x
http://mydomain.com/page4/x/y => http://mydomain.com/main.php?page=page4&g1=x&g2=y
http://mydomain.com/page5/    => http://mydomain.com/main.php?page=page5

在PHP解析时我在重写URL方面取得了一些进展,但是,我不知道如何处理确定如何区分重定向到其关联的HTML文件的那些文件以及重定向到索引的文件。 PHP。任何帮助将不胜感激。

Options +FollowSymLinks -indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /

RewriteCond %{REQUEST_FILENAME} -d [OR]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -l
RewriteRule ^ - [L]

RewriteRule ^([^/]+)/([^/]+)/([^/]+)/?$ ?page=$1&g1=$2&g2=$3 [L,QSA]
RewriteRule ^([^/]+)/([^/]+)/?$ ?page=$1&g2=$2 [L,QSA]
RewriteRule ^([^/]+)/?$ ?page=$1 [L,QSA]

</IfModule>

2 个答案:

答案 0 :(得分:0)

我认为您需要添加的是PHP RewriteRule以上的这一行:

RewriteRule ^(page[123])/?$ $1.html [L,QSA]

你可以尝试一下,看看它是否有效吗?

答案 1 :(得分:0)

我认为您可以使用route在PHP脚本中执行此操作。 例如,在index.php中,您可以写这个

<?php
    $filename = $_REQUEST['page'];
    if(file_exists($filename.".html")){
        //display html
        require_once($filename.".html");
    }else if(file_exists($filename.".php")){
        //run your script
        require_once($filename.".php");
    }
?>