2

我的实际网址如下所示:

http://mydomain.com/example.php?id=value1&name=value2

对我来说理想的是:

http://mydomain.com/example/value2

我不想显示项目 ID。我用谷歌搜索了几个小时,但没有发现任何有用的东西。我想传递 id 但不想在 URL 中显示它。这样的事情可能吗?我可以在客户端加载页面后以某种方式重写 url 吗?

如果我必须发送 id,那么我如何根据 id 重写名称值?因此,如果我在名称字段中键入与具有指定 ID 的项目无关的内容,则在响应时,我将获得与 ID 关联的名称的实际值。所以这就是我的意思:

  • 实际的 ulr 是:http://mydomain.com/example/123
  • 我输入的内容:http://mydomain.com/randomtext/123
  • 我仍然得到回应:http://mydomain.com/example/123

就像这里:http ://www.theatlantic.com/magazine/archive/1939/03/what-makes-an-american/309021/ 如果您更改what-makes-an-american为任何随机文本,您仍然会进入同一页面。他们使用重定向吗?这对加载时间有害吗?

4

2 回答 2

1

不,它对加载时间没有害处

<IfModule mod_rewrite.c>
RewriteEngine On
# /var1/value2.html to /example.php?id=value1&name=value2
RewriteRule ^([^/]+)/([^\.]+)\.html$ /example.php?id=$1&name=$2
</IfModule>

答案就在这里

于 2012-09-22T16:48:49.550 回答
0

将此保存为您的 .htaccess 文件:

RewriteEngine On
RewriteBase /

RewriteCond $1 !^index\.php
RewriteRule ^(.*)/$ index.php/$1 [L,QSA,NC]

RewriteCond %{REQUEST_FILENAME} !-f

RewriteCond %{REQUEST_URI} !(.*)/$
RewriteRule ^(.*)$ $1/ [L,R=301]

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

然后,您可以使用REQUEST_URI服务器变量来检索 URL 组件。

例如,使用http://mydomain.com/example/value2

$var = split('/', $_SERVER['REQUEST_URI']);

$var becomes array('example', 'value2');
于 2012-09-22T16:48:39.323 回答