1

我刚刚开始尝试重写我所有的网站 URL,但我不明白这一点。在我的 htaccess 文件中,我有以下代码:

RewriteEngine On
RewriteBase /
RewriteRule ^tjanster/([^/.]+)/?$ tjanster.php?page=$1 [L]

例如,当我点击链接时

<a href="tjanster/rackochskapbyggnation/tjanster.php?page=design">Design</a> 

它应该去,mypage.com/tjanster/design但它没有它仍然去

mypage.com/tjanster/rackochskapbyggnation/tjanster.php?page=design

但是,如果我mypage.com/tjanster/design直接在 URL 中写入,它会转到页面。

4

3 回答 3

1

不,它不是以这种方式工作的,而是相反:

<a href="tjanster/design">Design</a>

会导致tjanster/rackochskapbyggnation/tjanster.php?page=design.

mod_rewrite 的想法之一是处理此类不存在的 URI 请求并将它们转换为现有的请求,使您能够美化您拥有的 URL 或隐藏某些特定的 URL。

于 2013-03-15T10:31:30.223 回答
0

您必须在 PHP 中进行试验才能弄清楚,但您也可以让 PHP 在直接访问时重定向到有效的 URL。

该代码可能如下所示:

<?php
if (preg_match('~^/tjanster/rackochskapbyggnation/tjanster\/.php~i', $_SERVER['REQUEST_URI'])) {
    if (isset($_GET['page'])) {
        header('Location: /tjanster/' . $_GET['page']);
    } else {
        header('Location: /tjanster/');
    }
    exit;
}

此代码查看REQUEST_URI变量以查看请求的 URL 是否看起来像正在直接访问脚本,如果是,则重定向到漂亮的页面结构。您还必须保留您的重写规则。

于 2013-03-15T10:34:58.160 回答
0

尝试这个 :

RewriteRule tjanster.php?page=(.*) tjanster/$1 [L]

第一个参数是输入的uri,第二个怎么改写 $1 指的是()里面的数据

于 2013-03-15T10:38:03.060 回答