1

我正在尝试使用 mod_rewrite 仅将查询字符串保留在 url 中,并删除 index.php?p=。

例如,这个链接

http://domain.com/index.php?p=page-name-with-dashes

进入

http://domain.com/page-name-with-dashes.html

所有页面都是通过控制脚本 index.php 和查询 p=name 加载的,像这样

<?php
$page = isset($_GET['p']) ? $_GET['p'] : 'home';
...
require_once 'content-' . $page . '.php';
...
?>

我已经尝试了以下所有变体,但没有一个有效 - 有些给出 404 一些给出 500 错误。

#RewriteRule ^index.php?p=(.*) $1/

#RewriteRule ^([^/]+)/?$ /index.php?p=$1 [QSA,L]

#RewriteRule ^(.*)$ index.php?p=$1 [NC,L,QSA]

我究竟做错了什么?我不太了解 htaccess 规则,所以请原谅我的新手问题。

4

1 回答 1

2

试试这个:

RewriteRule ^(.*).html$  index.php?p=$1 [L]

但是请注意,如果您有多种情况(例如要重写的其他类型的 url),请小心 RewriteRules 的排序,因为您可以轻松地用另一种覆盖...

于 2012-09-27T09:20:32.380 回答