URL Shortener网站:Htaccess将GET请求添加到目录

时间:2015-06-30 15:02:21

标签: php apache .htaccess mod-rewrite redirect

我正在开发一个URL缩短网站,在我的htaccess中,我有以下代码:

RewriteRule ^([a-z0-9]+)$ redirect?code=$1 [NC]

这会从'CODE'获取example.com/CODE并将该代码发送到redirect.php文件,该文件会重定向到包含该代码的网址。

我还为用户的帐户设置了不同的目录; /account/以避免服务器混淆(因此它不会认为example.com/login应该从网址缩短器重定向到用户指定的代码。)

唯一的问题是,当我访问example.com/account时,它会将?code=account添加到网址,如下所示:example.com/account?code=account我并不完全确定原因。

任何人都可以帮助我吗?我希望重定向' /account/account/的网址,以便将其识别为目录。或者不只是account,而是让它适用于所有目录。我不知道这是否可能,不管多么感谢。

2 个答案:

答案 0 :(得分:0)

您需要避免重写真实文件和目录,如下所示:

# 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
RewriteRule ^([a-z0-9]+)/?$ redirect?code=$1 [NC,L,QSA]

答案 1 :(得分:0)

You might want to look at this simple url shortener, it's very similar to what you are doing.

The core is the .htaccess file:

Options +SymLinksIfOwnerMatch
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^((?!index\.php).+)$ /index.php?short=$1 [NC,L,QSA]

And it reads its links dynamically from a json file