我刚刚开始尝试重写我的所有网站网址,但我不明白这一点。在我的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
,就会转到页面。
答案 0 :(得分:1)
不,这不是这样的,但恰恰相反:
<a href="tjanster/design">Design</a>
会导致tjanster/rackochskapbyggnation/tjanster.php?page=design
。
mod_rewrite的一个想法是处理这些不存在的URI请求并将它们转换为现有的URI请求,使您能够美化您拥有的URL或隐藏某些特定的URL。
答案 1 :(得分: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是否看起来像是直接访问脚本,如果是,则重定向到漂亮的页面结构。您还必须保留重写规则。
答案 2 :(得分:0)
试试这个:
RewriteRule tjanster.php?page =(。*)tjanster / $ 1 [L]
第一个参数是输入uri,第二个是如何重写它$ 1指的是里面的数据()