.htaccess 修改我的重写代码

.htaccess 修改我的重写代码,.htaccess,mod-rewrite,.htaccess,Mod Rewrite,我的htaccess文件中有这个,它可以正常工作,但我想知道是否有办法重写它,这样我就可以不只是拉id,而是拉类别和标题,或者我需要这样做吗 Options +FollowSymLinks RewriteEngine on RewriteRule (.*)\.html$ fetch.php?id=$1 此外,如果这是我需要做的,我将如何改变我的标题,使之没有空格,只有破折号在它们之间?我听说URL不喜欢空格。我在其他地方读到过,他们使用了一个php代码,其中空格被转换成“-”或“u”以读入页面

我的htaccess文件中有这个,它可以正常工作,但我想知道是否有办法重写它,这样我就可以不只是拉id,而是拉类别和标题,或者我需要这样做吗

Options +FollowSymLinks
RewriteEngine on
RewriteRule (.*)\.html$ fetch.php?id=$1
此外,如果这是我需要做的,我将如何改变我的标题,使之没有空格,只有破折号在它们之间?我听说URL不喜欢空格。我在其他地方读到过,他们使用了一个php代码,其中空格被转换成“-”或“u”以读入页面,但恢复为在sql中读取。如果你需要更多地了解我的情况,请告诉我。谢谢

更新

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

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']); ?>">
这将把您的整个url放入path_info环境变量中,您可以在后端代码中使用该变量

RewriteCond部分确保仅当请求的文件实际上不存在时才重写url

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

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

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


如果在fetch.php的第一行中放置了一个
中止(“测试”)
,您是否仍然会收到
500
错误?我做了一些修改,我想出了这个办法……它正确地提取了url,但CSS仍然不起作用。@user1557936请检查我编辑的答案,了解您的新问题。当您指的是页眉时,您的意思是在头标记之间还是在doctype之前html的第一行之间?@user1557936是的,在
标记之间。您好,我已将其添加到标记中,这是我收到的警告“警告:第19行的/home/content/02/9583902/html/fetch.php中被零除”,我将再次尝试线程上的其他答案
<base href="/">