1

我是 URlRewriting 的新手,我在重写我的 URL 时遇到了一些问题,我有一个 .php 索引页,其中的内容是根据 url 变量使用 php 填充的。

我的问题是我似乎找不到正确的表达方式来让它工作。对于我的主页,我只发送 1 个变量,例如

"index.php?page=home"

但是对于其他页面,我最多使用 4 个变量,例如 "index.php?page=about&content=about-news&id=27&pn=1"

现在我已经让 1 或 2 个单独工作但不能一起使用:

RewriteRule ^((.*)+)$ index.php?page=$1

或者

RewriteRule ^(.*)/(.*)$ index.php?page=$1&content=$2

过去几天我一直在谷歌和 Stackoverflow 上四处寻找,但我似乎找不到一个可行的解决方案,有没有人知道如何让它工作?干杯

4

2 回答 2

2

尝试:

#Make sure it's not an actual file
RewriteCond %{REQUEST_FILENAME} !-f 

#Make sure its not a directory
RewriteCond %{REQUEST_FILENAME} !-d 

#Rewrite the request to index.php
RewriteRule ^(.*)$ index.php?/$1 [L]

然后,您可以查看 $_SERVER['REQUEST_URI'] 变量以查看请求的内容。

这应该对你有用,让我知道你的进展如何。

于 2012-04-26T12:29:05.467 回答
2

您只需要一次重写:

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?route=$1 [L,QSA]

然后在您的 index.php 文件中,您将路线分成几部分:

$route = (!isset($_GET['route']))?'':$_GET['route']);
$parts = explode('/', $route);

So your old urls like this:
index.php?page=home 
index.php?page=about&content=about-news&id=27&pn=1
index.php?page=$1
index.php?page=$1&content=$2

Become:
Example: `http://example.com/controller/action/do/value`
or       `http://example.com/$parts[0]/$parts[1]/$parts[2]/$parts[3]/$parts[4]`

保持控制器->动作->执行->值的想法很容易分配路由。

?page=将是你的控制器

?content=将是你的行动

?id=将是您的子行动 | 做 | 价值

于 2012-04-26T12:31:58.923 回答