使用.htaccess重写URL以缩短链接

时间:2012-02-25 03:34:17

标签: php apache url rewrite

我希望能够拿到网址

www.mydomain.com/profile.php?user=THEUSERNAME

并将其转换为

www.mydomain.com/THEUSERNAME

几乎像推特。

我也希望能够把它带到我可以去的地方

www.mydomain.com/THEUSERNAME

它将转到用户的页面,而不会将URL更改回长URL。我不知道这是怎么做的,我也不知道它是否需要.htaccess,PHP或两者兼而有之。 请帮忙。


找到解决方案


在.htaccess文件中:

RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/\.]+)/?$ profile.php?user=$1 [L]

此外,您还需要为所有CSS和JS文件提供绝对 URL。例如,不必使用src =“css / main.css”,而是必须输入src =“http://yourdomain.com/css/main.css”。原因是因为如果您的网址有反斜杠(即 yourdomain.com/USERNAME / ),那么它会认为它位于下一个目录中并且会导致冲突。 Absolute解决了CSS和JS问题。

在< head>中profile.php:

不是这样:

   <link href="css/allpage.css" rel="stylesheet" type="text/css" />

此:

   <link href="http://yourdomain.com/css/allpage.css" rel="stylesheet" type="text/css" />

2 个答案:

答案 0 :(得分:2)

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/?$ /profile.php?name=$1 [L]

这样可行,http://yoursite.com/username(带或不带斜线)将重写为http://yoursite.com/profile.php?user=username

此外,您必须使用/基于文件(适用于<script><link>)或完整网址,否则您可能会收到404错误。我还建议你添加一个CDN,你可以推送链接víaCDN,一个非常好的是maxCDN - 40USD第一个TERABYTE!。

祝你好运!

答案 1 :(得分:1)

试试这个

RewriteEngine on
# we're working the document root
RewriteBase /
# make sure requested item is not a file
RewriteCond %{REQUEST_FILENAME} !-f
# re-route everything that may be a username slug to the profile
RewriteRule ^([^/]+)/?$ /profile.php?name=$1 [L]