修改我的重写代码

时间:2012-08-14 13:11:04

标签: .htaccess mod-rewrite

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)\.html$ fetch.php?id=$1

我在我的htaccess文件中有这个并且它工作正常,但我想知道是否有一种方法可以重写这个而不是只是拉动ID#我可以拉取类别和标题,或者我需要做这样的事情

RewriteRule (.*)/(.*)/(.*)\.html$ fetch.php?id=$1&category=$2&title=$3

此外,如果这是我需要做的,我将如何更改我的标题,没有空格,只有它们之间的破折号?我听说网址不喜欢空格。我已经读过其他地方,他们使用了一个PHP代码,其中空格被转换为“ - ”或“_”以读入页面,但还原为在sql中读取。如果您需要了解我的情况,请告诉我。感谢。

UPDATE!

RewriteRule (.*)/(.*)/(.*)\.html$ fetch.php?id=$1&category=$2&title=$3

这是htaccess规则

<a href="<?php echo $row_getDisplay['id']; ?>/<?php echo $row_getDisplay['category']; ?>/<?php echo urlencode($row_getDisplay['title']); ?>">

这是我的链接..这个方法我得到它与id / category / title没有空格,但没有css或图像显示。我正在拉ID,因为这就是我的fetch.php如何拉动它我不知道如何设置它所以它按类别和标题拉动。

2 个答案:

答案 0 :(得分:0)

我建议不要这样做,因为这不是很容易扩展,你可能想尝试以下方法:

在你的htaccess中添加以下内容:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* fetch.php/%{REQUEST_URI} [QSA,L]

这会将您的整个网址放入path_info环境变量中,您可以在后端代码中使用该变量。

RewriteCond部分确保只有在请求的文件实际存在时才会重写URL。

答案 1 :(得分:0)

  

这个方法我把它用id / category / title拉起来没有空格但没有css或图像显示。我正在拉ID,因为这就是我的fetch.php如何拉动它我不知道如何设置它所以它按类别和标题拉动。

这可能是因为您的所有链接都是相对的,并且基本URI已从/something.html(即/)更改为/something/foo/bar.html(即/something/foo/)所以所有相关链接现已破裂。尝试将此添加到您网页的标题中:

<base href="/">