使用的.htaccess缩短链接
我期待能够采取的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" />
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 !.
祝你好运!
试试这个
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]
尽管我可能会根据您的需要添加其他条件,但它的效果很好。 'RewriteCond%{REQUEST_FILENAME}!-d'确保请求不是目录。 – qsheets 2012-02-25 15:03:58
“不是目录”只有在“目录列表”处于活动状态时才有意义。这是你通常禁止的东西。 (这就是为什么我把它排除在外......) – rodneyrehm 2012-02-25 15:09:14
谢谢你帮助我,但是我必须报告这是行不通的。它也给我一个“对象未找到”的错误,与上面的答案一样的错误。我有一个完美的重写(当你没有结尾的斜线时),但是当后面的斜线出现时,它会导致CSS和JS错误(可能是因为绝对文件位置)。所以这就是我寻找替代品的原因。感谢您花时间试图解决我的麻烦,希望我们能解决这个问题。 – 2012-02-25 21:50:23
你并不真的需要结尾的斜线,但你确实是需要确保它不是一个文件或目录可能导致的问题。 – qsheets 2012-02-25 05:57:09
啊,它造成了一些问题。它不工作,它导致我的文件出错,无法读取单独目录中的文件。这可能与使用离线服务器(测试服务器WAMP)有关,即使我以前在此服务器上使用过REWRITES,并且它们工作得很完美吗? – 2012-02-25 07:33:05
@ Q.Sheets这正是我的意思,你只需要添加一个?在重写链接之前的$之前,这将会起作用,但这将是一件非常困难的事情。 – Luis 2012-02-25 14:24:28