3

我在我的网站中使用 MVC 框架。在我的网页 URL 文件扩展名中没有显示。我需要指定文件扩展名,如

www.legacy.com/women/tops.php 

但它只显示

www.legacy.com/women/tops/ 

出于 seo 的目的,我想更改带有扩展名的 url。但我无法更改文件夹或文件名。

我还有一个疑问。我的网页正在显示

www.legacy.com/women/tops/ 

像这样我想把它改成 www.legacy.com/women_tops.php/ 有可能吗?

谢谢

这是我用来将 URL 与控制器相关联的代码:

$arrCommands = array (
    'home' => "contents",
    'members' => "",        
);

if ( $arrCommands[$command1] == "*" )
{
    $includeFile = CONTROLLER_PATH . "/" . $command1 . "/" . $command2 . ".php";

    if ( !file_exists($includeFile) )
        $includeFile = CONTROLLER_PATH . "/" . $command1 . "/default.php";
}
    elseif ( !array_key_exists($command1, $arrCommands) )
    {
        $includeFile    =   CONTROLLER_PATH . "/contents/" . $command1 . ".php";
        if ( !file_exists($includeFile))
    Header( "Location: http://metroplots.ragedev/404_error/" );     
    }
else
{
    $includeFile = CONTROLLER_PATH . "/". $arrCommands[$command1] . "/" . $command1 . ".php";

    if ( !file_exists($includeFile) )
        $includeFile = CONTROLLER_PATH . "/contents/home.php";
}

include_once($includeFile);
4

7 回答 7

5

.htaccess 可以变魔术。可以重写任何你想要的东西,可能会变得混乱...... http://httpd.apache.org/docs/2.0/misc/rewriteguide.html

您还应该能够在应用程序本身中执行此操作。在大多数优秀的框架中,您可以使用自定义路由,这里是 zend 示例

于 2012-12-21T05:10:45.583 回答
2

您正在寻找的技术称为url 重写

这个想法是获取一个给定的 url 并在服务器端重写它。许多软件使用这种方法来不通过获取参数来暴露逻辑......

例如 http://domain.com/blog/2

根据服务器,这个 url 实际上是:

http://domain.com/index.php?cat=blog&page=2

在 linux/apache 服务器上是通过 modrewrite 实现的: http ://httpd.apache.org/docs/current/mod/mod_rewrite.html

在服务器上使用 .htaccess 文件来解释重写规则和路由 url。

microsoft iis 服务器有自己的风格(和语法),称为 url 重写: http ://www.iis.net/downloads/microsoft/url-rewrite

有一些工具可以为你做到这一点(这里是其中 6 个的概述) http://webm.ag/2009/12/15/6-of-the-best-mod-rewrite-generators/

但我觉得大多数时候你最好的办法是手动创建你自己的。

这是我在我的网站上使用的一个示例:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . index.php [L]

基本上这个规则集会将所有流量重定向到 index.php

在我的 MVC 中,我有一个名为“url_logic”的通用控制器,它首先运行并查看 url 是什么。并根据它的逻辑创建必要的控制器来创建站点(即使它是 404 错误控制器)。

希望这可以帮助您入门!

此外,如果您使用的 Windows .htaccess 文件很难使用。我建议将它们命名为 htaccess.txt,然后在将它们上传到服务器时将它们重命名。

于 2012-12-28T21:08:30.463 回答
1

您必须在 htaccess 中添加以下 2 行

RewriteEngine On

RewriteRule ^women/tops /women_tops.php
于 2012-12-21T05:14:14.207 回答
1

创建一个 index.php 文件,该文件将作为默认文件读取以进行显示并将其重定向到您的文件。

于 2013-01-01T01:19:22.007 回答
1

你正在寻找的是 mod_rewrite mod_rewrite:

在 URL 中隐藏扩展名:

mod_rewrite 重写规则生成器将获取给它的动态 url,并生成正确的语法以放置在 .htaccess 文件中,以允许以可抓取的格式重写 url。apache 模块 mod_rewrite 将某种格式的 url 转换为另一种格式,在帮助对具有动态内容的站点进行索引方面非常有用。

注意:在 mod_rewrite 付诸行动之前,您应该在 apache 服务器中启用它。

Syntax: RewriteRule url-pattern url-new [[flag,...]]
Example: RewriteRule ^/foo/(.*)$ /bar/$1 [R,L]

一些有用的链接-

网址:http ://httpd.apache.org/docs/1.3/mod/mod_rewrite.html

网址:http ://tomclegg.net/rewriterule

于 2013-01-01T05:46:52.523 回答
0

看看这个网页。我想它可能会给你答案。

于 2013-01-01T09:35:11.850 回答
0

感谢每一位重播这个问题的人。

$xepWords = explode('_',$command1);
    if($xepWords[0] == 'women')
    {
        $includeFile = CONTROLLER_PATH .'/women/tops.php';
    }  

我在控制器操作中添加了这段代码现在它工作正常

于 2013-01-02T07:53:55.033 回答