【问题标题】:Changing URL format in PHP [duplicate]在 PHP 中更改 URL 格式 [重复]
【发布时间】:2015-11-16 02:49:00
【问题描述】:
我想改变这种格式
http://mysite.tld/go.php?id=20
到
http://mysite.tld/20
如何使用 PHP 实现这一点?
【问题讨论】:
标签:
php
apache
.htaccess
mod-rewrite
url-rewriting
【解决方案1】:
在你的 Root/.htaccess 文件中试试这个:
RewriteEngine On
RewriteCond %{THE_REQUEST} /go\.php\?id=([^\s]+) [NC]
RewriteRule ^ /%1? [NC,R,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ go.php?id=$1 [QSA,L,NC]
【解决方案2】:
如前面的答案中提到的,通常的方法是通过 .htaccess 文件使用Apache's Rewrite Engine。
如果您正在寻找特定于 PHP 的解决方案:
- 将所有传入请求重定向到单个 PHP 页面。
- 在此页面上,首先检索使用预定义的
$_SERVER 数组输入的 URL,不包括基本 URL。 ($_SERVER["HTTPS"],$_SERVER['HTTP_HOST'],$_SERVER['REQUEST_URI'])
- 一旦你有了这个,使用适当的Regex 将 URL 拆分为键和值对。 (
'@/@')
- 将键映射到存储页面引用的数组的键。
- 使用值的 POST 或 GET 参数重定向到此页面。
【解决方案3】:
您希望您的服务器而不是 PHP 来处理这个问题。
如果您的服务器支持 .htaccess 文件,您可以创建它并添加:
RewriteEngine On
RewriteRule ^([^/]*)$ /go.php?id=$1 [L]
这将允许您访问
example.com/20 但被调用的页面将是go.php?id=20