这是我的第一个问题:
我在PHP中创建了一个URL Shortner Service。它完全没有任何问题,但是出现了问题:
想要访问其网址的人应输入: MyDomain.com/go.php?u=key 在这里,我尝试通过配置apache和working来删除 .php 扩展。现在它是这样的: 的 MyDomain.com/go?u=key
但是像TinyUrl.com这样的服务就是这样的: TinyURL.com/key !!!!
我怎样才能在php中获得这个?
非常感谢。
答案 0 :(得分:1)
您基本上使用 mod_rewrite 。
使用mod_rewrite,您可以说所有请求都是
www.example.com/[A-Za-z1-9]
被重定向到:
www.example.com/shorturl.php?key=$1
$ 1是从请求的URL中提取的变量。
使用纯PHP没有正确的方法。
重写规则可能如下所示:
RewriteRule ^([A-Za-z1-9]*)$ shorturl.php?key=$1 [L]
我会排除重写时真正存在的文件,用于此目的 的RewriteCond。
这可以像这样完成:
# If the request is not for a valid directory
RewriteCond %{REQUEST_FILENAME} !-d
# If the request is not for a valid file
RewriteCond %{REQUEST_FILENAME} !-f
# If the request is not for a valid link
RewriteCond %{REQUEST_FILENAME} !-l
RewriteRule ^([A-Za-z1-9]*)$ shorturl.php?key=$1 [L]
(资料来源:anubhava at RewriteCond to skip rule if file or directory exists)
答案 1 :(得分:0)
创建.htaccess文件以将任何请求重定向到您的域名为go.php
所以在.htacess中这样做:
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ go.php?key=$1 [PT,L]
</IfModule>
将mydomain.com/userkey等任何请求重定向到mydomain.com/go.php?key=userkey
现在在index.php中,您可以进行重定向登录。
<?php
$key = $_GET['key'];
// your logic here.
?>