我正在开发一个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
,而是让它适用于所有目录。我不知道这是否可能,不管多么感谢。
答案 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