【发布时间】:2014-05-02 23:02:10
【问题描述】:
我正在尝试学习如何在 .htaccess 文件中重写 URL。我已经阅读了一些教程,但尽管我按照示例代码编写,但对我来说什么也没发生!我想知道我在这里做错了什么?当我尝试下面的代码时,我得到了一个 404 代码。
RewriteEngine On
RewriteRule /byggnader/1/ /?p=byggnad&id=1
这只是一个测试,我想知道/byggnader/ 是否必须是现有文件或只是 URL 中的名称。我正在使用页面控制器设计。所以 URL /?p=byggnad&id=1 将打开PSelectedBuilding.php 文件内的index.php 文件。
我感谢一些反馈,以便能够继续。
编辑:尽管有以下帮助,它仍然无法正常工作,因此我还添加了处理请求的 index.php 文件中的代码。也许这可以说明原因!?
<?php
session_start();
// Allow only access to pagecontrollers through frontcontroller
$indexIsVisited = TRUE;
require_once('config.php');
// pagecontrol
$page = isset($_GET['p']) ? $_GET['p'] : 'start';
switch($page) {
case 'start': require_once('PIndex.php'); break;
case 'karta': require_once('PMap.php'); break;
case 'byggnader': require_once('PBuildings.php'); break;
case 'tips': require_once('PTips.php'); break;
case 'visa-byggnad': require_once('PHandleSessions.php'); break;
case 'byggnad': require_once('PSelectedBuilding.php'); break;
case 'visa': require_once('PSelectedBuilding.php'); break;
case 'visa2': require_once('PHandleSessions.php'); break;
default: require_once('PIndex.php'); break;
}
require_once("CreatePage.php"); // Call file that creates the page
?>
编辑 2:
这很好用,但当我对某些页面使用请求时就不行了:
RewriteEngine On
RewriteRule bilder-byggnader-kopenhamn /?p=byggnader
RewriteRule karta-byggnader-kopenhamn /?p=karta
RewriteRule start /?p=start
RewriteRule tips /?p=tips
【问题讨论】:
-
你到底想达到什么目的?
-
@elbuild 获得像 WordPress 中的更清晰的 URL
-
是的,我猜到了。但我问的是你想用这条规则达到什么目的(因为它不正确但不了解它的目的很难帮助你)
-
我希望 URL 是 /byggnad/1/ 而不是 /?p=byggnad&id=1 我认为 .htaccess 文件中的代码可以解决这个问题,但我想这是错误的。怎么了?
-
RewriteRule 指令重写请求匹配第一项,第二项...如果您的目的是获取 /byggnad/1/ 作为输出,您可能至少需要更改参数的顺序.此外,查询字符串应该以不同的方式匹配。
标签: php regex apache .htaccess mod-rewrite