2012-02-25 88 views
2

我期待能够采取的URL使用的.htaccess缩短链接

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

,并把它改写网址

www.mydomain.com/THEUSERNAME 

几乎像Twitter。

我也希望能够拥有它,我可以去

www.mydomain.com/THEUSERNAME 

,它会转到用户的页面,而无需改变URL回长的URL。我不知道这是如何完成的,我也不知道它是否需要.htaccess,PHP或可能两者。 请帮忙。


SOLOUTION FOUND


里面.htaccess文件:

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

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

在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
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>)或完整的URL,否则可能会出现一些404错误。我还建议你添加一个CDN,你可以推这个链接víaCDN,一个很好的是maxCDN - 40USD的第一个TERABYTE !.

祝你好运!

+0

你并不真的需要结尾的斜线,但你确实是需要确保它不是一个文件或目录可能导致的问题。 – qsheets 2012-02-25 05:57:09

+0

啊,它造成了一些问题。它不工作,它导致我的文件出错,无法读取单独目录中的文件。这可能与使用离线服务器(测试服务器WAMP)有关,即使我以前在此服务器上使用过REWRITES,并且它们工作得很完美吗? – 2012-02-25 07:33:05

+0

@ Q.Sheets这正是我的意思,你只需要添加一个?在重写链接之前的$之前,这将会起作用,但这将是一件非常困难的事情。 – Luis 2012-02-25 14:24:28

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] 
+0

尽管我可能会根据您的需要添加其他条件,但它的效果很好。 'RewriteCond%{REQUEST_FILENAME}!-d'确保请求不是目录。 – qsheets 2012-02-25 15:03:58

+0

“不是目录”只有在“目录列表”处于活动状态时才有意义。这是你通常禁止的东西。 (这就是为什么我把它排除在外......) – rodneyrehm 2012-02-25 15:09:14

+0

谢谢你帮助我,但是我必须报告这是行不通的。它也给我一个“对象未找到”的错误,与上面的答案一样的错误。我有一个完美的重写(当你没有结尾的斜线时),但是当后面的斜线出现时,它会导致CSS和JS错误(可能是因为绝对文件位置)。所以这就是我寻找替代品的原因。感谢您花时间试图解决我的麻烦,希望我们能解决这个问题。 – 2012-02-25 21:50:23