php + .htaccess 重写 URL 以获得漂亮的永久链接时出现问题

问题描述 投票:0回答:1

我正在尝试用 php 制作一个非常简单的小应用程序:它是一个博物馆的小型字幕系统。该结构是一个index.php 文件,它通过查询字符串将请求发送到details.php 页面,我可以在其中读取单个标题。

我会在序言中说,我对服务器和路由知之甚少,所以我肯定错过了一些简单的东西。我已经尝试观看所有可以想象到的教程,但我无法弄清楚什么不起作用。

我正在 MAMP 上进行本地开发:基本重写有效,但我的解决方案无效。

这是索引的标记:

<!DOCTYPE html>
<html lang="en">

<?php include('includes/header.php'); ?>

<?php foreach($didas as $dida):  ?>

    <h3><?php echo htmlspecialchars($dida['title']); ?></h3>

    <a href = "details/details.php?url=<?php echo($dida['url']) ?>" >link</a>;

<?php endforeach ?>

<?php include('includes/footer.php'); ?>

</html>

数据库是mySql中的一个有4列的表。这些列之一是 url 参数,理想情况下它会成为向我调用标题的查询字符串。

带有查询字符串的 url 是这样的:

http://localhost:8888/dida/details/details.php?url=test-1

我正在尝试像这样重写它:

http://localhost:8888/dida/details/test-1

这是我的问题:

我尝试使用 .htaccess 更改此网址:我在 stackoverflow 上遵循了很多不同的教程和答案

这是我的Htaccess代码


RewriteEngine On

# this rule rewrites my url but it gives me a 404 error

RewriteCond %{ENV:REDIRECT_STATUS} ^$
RewriteCond %{QUERY_STRING} ^url=([\w/-]*)
RewriteRule ^details/details\.php$ /dida/details/%1 [QSD,R=302,L]

php apache .htaccess url-rewriting friendly-url
1个回答
0
投票

你可以尝试这个简单的.htaccess

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php/$1 [L]

希望这对您有帮助。

您可以了解更多相关信息https://github.com/phanan/htaccess

© www.soinside.com 2019 - 2024. All rights reserved.