我刚开始学习php,我创建了一个简单的php网站,其中包含帖子,用户。我发帖子链接看起来像:http://localhost/?post=3
我的问题是有没有办法使网址看起来像http://localhost/post/252155
不同,而不为它创建PHP页面。
这是我的代码段
$results = mysqli_query($conn, "SELECT * FROM projects");
$project = array();
if (mysqli_num_rows($results) > 0) {
while($row = mysqli_fetch_assoc($results)){
$project[] = $row;
}
}
$projects = 0;
$maxprojects = 14;
while ($projects < $maxprojects) {
$projectId = $project[$projects]["project_id"];
$projectURL = "../basic/?project=".$projectId ;
$projectTitle = $project[$projects]["project_title"];
$projectThumb = $project[$projects]["project_thumbnail"];
$projectPrice = $project[$projects]["project_price"];
echo "
<li class='gig'>
<div class='gig-content'>
<span class='thumbnail'>
<a href='$projectURL'><img src='".$projectThumb."'></a>
</span><!-- Gig Thumbnail -->
<span class='title'>
<h2><a href='$projectURL'>".$projectTitle."</a></h2>
</span><!-- Gig Title -->
<div class='meta'>
<span class='price'>
<h1>".$projectPrice."$</h1>
<h4>Startin at</h4>
</span><!-- price -->
</div>
</div>
</li><!-- Gig -->
";
++$projects;
}
提前感谢!
答案 0 :(得分:2)
要完成此任务,您需要先创建一个名为&#34; .htaccess&#34;的文本文档。包含你的规则。必须准确地命名(不是&#34; .htaccess.txt&#34;或&#34; rules.htaccess&#34;)。那里可能已经存在.htaccess文件,在这种情况下你应该编辑它而不是覆盖它。
RewriteEngine On
RewriteRule ^post/([0-9]+)/?$ ?post=$1 [NC,L]
注意:仅当Application在Apache上运行
答案 1 :(得分:0)
一种常见的方法是让Web服务器将所有URL请求路由到任意(只要在该位置不存在实际资源 - 文件)。使用Apache Web服务器,您可以使用create .htaccess
将没有文件或目录的所有URL路由到index.php文件。例如,在面向公众的目录的根目录中,其.htaccess
可以包含
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
这会将所有不存在的URL作为文件或目录路由到网站根目录中的index.php
。 (这是WordPress的方式)。
然后,在index.php
内,您可以解析网址并根据网址提供您希望的任何内容(或不提供)。您可以在PHP代码中创建自己的路由系统,以将内容生成指向您喜欢的任何PHP页面。
<?php
print_r($_SERVER['REQUEST_URI']);
例如,https://yourdomain.com/post/13452345
会输出/post/13452345
。
%_SERVER['QUERY_STRING']
,parse_url()也可能有用。并且可能还提供与安装/配置相关的值:$_SERVER['SCRIPT_URI']
和$_SERVER['SCRIPT_URL']
可以在PHP参考站点Predefined Variables, $_SERVER
找到更多信息您可以根据需要解析URI:
$URI_COMPONENTS = explode( '/', $_SERVER['REQUEST_URI'] );
if ($(URI_COMPONENTS[0] == 'post') {
// get $(URI_COMPONENTS[1])
// output response based on post value
// Maybe something like put_post_content($(URI_COMPONENTS[1]));
}
else
{
http_response_code(404); // Not a "post" request, so invalie URL
}