0

Mod_Rewrite 有一些问题。我必须承认这是我第一次尝试这个模块,所以我可能会遇到一些愚蠢的事情。我一直试图让它自己工作一天左右,我不知道为什么这不起作用。

我收到以下错误:

注意:未定义索引:第 31 行 D:\wamp\www\WildForFashion\Portal\Index.php 中的目录

我想要完成的是能够拥有一个模板页面 (index.php) 并让 Mod_Rewrite 为我更改 url,以便它可以搜索友好并简化编码和设计。

当根本没有加载图像/ CSS文件时,我也遇到了问题,我确实读到使用绝对 url 会起作用。

截至目前,我首先在 PORTAL 目录中工作(这是一个用于网站维护的管理页面),然后将移动到根目录。我不确定是否需要一个或两个 .htaccess 文件(一个在根目录中,第二个在门户目录中)。

DIR 文件夹用于保存网站的每个类别和页面,如下所示:

Domain.com/{CATAGORY}/{PAGE}/
ROOT / DIR / {CATAGORY} / {Page}.php

Domain.com/Portal/{CATAGORY}/{PAGE}/
ROOT / Portal / DIR / {CATAGORY} / {Page}.php

.htaccess 之前

RewriteEngine on
RewriteRule ^/Portal/$      Portal/Index.php?Dir=Portal&Page=Home   [L,QSA]
RewriteRule ^Portal/(.*)/(.*)$  Portal/Index.php?Dir=$1&Page=$2 [L,QSA]
RewriteRule ^Portal/(.*)/$      Portal/Index.php?Dir=$1&Page=Home   [L,QSA]

.htaccess 之后(使用例外情况)

RewriteEngine on
RewriteRule Portal/$     Portal/Index.php?Dir=Portal&Page=Home   [L,QSA]
RewriteRule Portal/([^/]+)/$     Portal/Index.php?Dir=$1&Page=Home   [L,QSA]
RewriteRule Portal/([^/]+)/([^/]+)/$     Portal/Index.php?Dir=$1&Page=$2 [L,QSA]

索引.php

<?php
include_once("DIR/" . $_GET['Dir'] . "/" . $_GET['Page'] . ".php");
?>

目录树

  • CSS
  • 目录
  • IMG
  • JS
  • SRC
  • 门户网站
    • CSS
    • 目录
      • 门户网站
      • 存货
      • 统计数据
      • 订单
    • IMG
    • JS
    • SRC
    • 索引.php
    • .htaccess
  • 索引.php
4

1 回答 1

1

您在不需要存在的匹配规则中包含正斜杠,并将它们从需要存在的重定向路径中排除。尝试这个:

RewriteRule Portal/$      Portal/Index.php?Dir=Portal&Page=Home   [L,QSA]

RewriteRule Portal/(.*)/(.*)$  Portal/Index.php?Dir=$1&Page=$2 [L,QSA]

RewriteRule Portal/(.*)/$      Portal/Index.php?Dir=$1&Page=Home   [L,QSA]

请注意,我从重写规则的匹配部分中删除了 ^,因为这表明 taht 应该是 URI 的开头。我还删除了替换模式前面的“/”。

于 2012-07-26T20:33:09.843 回答