我的实际网址如下:
http://mydomain.com/example.php?id=value1&name=value2
对我来说理想的是:
http://mydomain.com/example/value2
我不想显示商品ID。我用谷歌搜索了几个小时,但没有找到任何有用的东西。 我想传递id但不想在URL中显示它。这样的事情可能吗? 我可以在客户端加载页面之后以某种方式重写URL吗?
如果我必须发送id,那我怎么能重写名称值,按照id? 因此,如果我在名称字段中键入与具有指定id的项目无关的内容,则在响应时,我将获取与id关联的名称的实际值。 所以这就是我的意思:
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
更改为任意随机文字,您仍会转到同一页面。
他们使用重定向吗?这对加载时间有害吗?
答案 0 :(得分: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>
答案是here。
答案 1 :(得分: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');