0

在stackoverflow中,页面url就像 如何存储post variables值

但是当我们使用php创建网页时,它很可能有一个像www,somewebsite.com/mypage?someid=123这样的url

然后显示内容。

我想知道如何转换 www.somewebsite.com/mypage?someid=123

进入 www.somewebsite.com/mypage/some_page_link_here_which_is_static

有人知道怎么做吗?我尝试先搜索这个问题,但它向我展示了 c/c++/java 链接:|

编辑:

我尝试了一些 youtube 视频,我的 HTACESS 代码是
RewriteEngine on
RewriteCond %(REQUEST_URI) find/([0-9]+)/
RewriteRule find(.*)/ /find.php?id=$1

这会将一些像
something/find.php?id=11 这样的 url 变成
something/find/11

.htaccess 文件位于我网站的根目录中。但它仍然失败。我做错了什么吗?

4

4 回答 4

1

尝试搜索“使用 htaccess 更改 url”。

编辑您的 .htaccess 文件:

RewriteRule ^mypage/(A-Za-z0-9_+]) page.php?post_uri=$1
于 2013-08-19T09:58:06.527 回答
1

它称为url重写。对于 apache web 服务器,您可以使用 mod_rewrite 扩展来实现这一点。通常开发人员使用一个.htaccess文件来为这个模块提供配置指令。

执行 url 重写的简单 .htaccess 条目如下所示,它将流量发送到/名为someother.html.

RewriteEngine on
RewriteRule ^$ /someother.html

框架进行路由的最常见方式之一是将进入 Web 应用程序的所有流量路由到控制器。然后用php分析REQUEST_URI并进行路由。.htaccess与必须在文件上静态提供每个规则相比,这提供了更动态地进行路由的方法。

于 2013-08-19T09:58:13.183 回答
0

许多 CMS 和 Web 编程框架支持这种用户(和搜索引擎)友好链接的实现。

在最低级别,您可以使用所有服务器上的 URL 重写功能。

如果使用 Apache 服务器,则必须编辑 .htaccess 文件;对于 IIS(Windows 服务器)web.config 文件。

Google for url rewrite apache 或 url rewrite IIS。

更新: 作为示例,请参阅此解决方案(借自CodeIgniter)。你当然可以用你想要的任何东西替换 index.php、图像等。

RewriteEngine on
RewriteCond $1 !^(index\.php|images|robots\.txt)
RewriteRule ^(.*)$ /index.php/$1 [L]

更新 2 - 说明

至于更深入的解释,我发现这个主题的优秀介绍/教程:初学者的 URL 重写

希望这比上面无法解释的例子更有意义:)

于 2013-08-19T09:59:01.213 回答
0

http://httpd.apache.org/docs/2.0/mod/mod_rewrite.html

例如

www.somewebsite.com/mypage/dynamic-link-to-static-link

.htaccess 部分

RewriteRule ^mypage/(A-Za-z0-9_+]) page.php?post_uri=$1 [QSA]

page.php 部分

$post_uri = $mysqli->real_escape_string($_GET['post_uri']);

//然后就可以通过变量$post_uri找出行

RewriteEngine on
RewriteCond %{REQUEST_URI} find/([0-9]+)$
RewriteRule  /find.php?id=$1

试试这个 %(REQUEST_URI) => %{REQUEST_URI}

于 2013-08-19T10:06:38.590 回答